windbg----as、$u0(固定别名、自定义别名)
固定别名($u0~$u9)
有10个固定别名。他们是$u0, $u1, ..., $u9。他们的等价字符串可以是不包含ENTER键的任意字符串。使用r (Registers)命令为固定别明指定等价字符串。定义固定别名时,必须在字母"u"之前插入点号(.)。等号(=)之后的文本是等价字符串。等价字符串可以包含空格或分号,但是头部和尾部的空格被忽略掉。不能用引号将等价字符串括起来(除非希望替代结果中包含引号)。
注意 r (Registers)命令设置固定别名容易混淆。这些别名不是寄存器或伪寄存器,即使使用了r命令来设置了他们的等价字符串。这些别名前不需要添加at符号(@),也不能使用r命令来显示这些别明的值。默认情况下,如果没有定义固定别名,他们是空字符串。
0:000> r $.u0 = test1!wmain 0:000> .echo $u0 test1!wmain 0:000> u $u0 L2 test1!wmain [d:\windbg\test1\test1.cpp @ 16]: 01071a40 55 push ebp 01071a41 8bec mov ebp,esp 注意是$.u0
自定义别名
as 和aS 命令定义一个新的别名或重新定义已存在的别名
语法:
as Name EquivalentLine aS Name EquivalentPhrase aS Name "EquivalentPhrase" as /e Name EnvironmentVariable as /ma Name Address as /mu Name Address as /msa Name Address as /msu Name Address as /x Name Expression aS /f Name File as /c Name CommandString
/e 设置别名的值为EnvironmentVariable 指定的环境变量。
/ma将别名的等价值设置为从地址Address 开始的null结尾的ASCII字符串。
/mu将别名的等价值设置为从地址Address 开始的null结尾的Unicode字符串。
/msa将别名的等价值设置为从地址Address 开始的null结尾的ANSI_STRING结构。
/msu将别名的等价值设置为从地址Address 开始的null结尾的UNICODE_STRING结构。Address指定用来决定别名的等价值的虚拟内存位置。
/f设置别名的等价值为File 文件的内容。
/f 开关只能和aS一起使用,不能和as一起。File指定内容作为别名等价值的文件。File可以包含空格,但是不能将 File用引号括起来。如果指定了非法的文件,会得到一个"Out of memory"的错误信息。
如果用户别名是和命令的其他部分是连续的,就必须使用${用户别名}将用户别名包围起来,或者使用空格把别名和其他部分分隔开来:
0:000> as ENTRY $exentry 0:000> al Alias Value ------- ------- ENTRY $exentry 0:000> dd ENTRY L2 00e2af95 358f36e9 63e1e900 0:000> dd ENTRY+2 L2 Couldn't resolve error at 'ENTRY+2 ' 0:000> dd ENTRY +2 L2 00e2af97 e900358f 002c63e1 0:000> dd ${ENTRY}+2 L2 00e2af97 e900358f 002c63e1
但因为固定别名的长度是确定的,所以可以直接用$u0,而不需要大括号:
0:000> r $.u0=$exentry 0:000> dd $u0+2 00e2af97 e900358f 002c63e1
使用al可以列出所有用户命令别名,使用ad可删除指定或全部(ad*)用户别名:
0:000> al Alias Value ------- ------- ENTRY $exentry windbg> .hh ad 0:000> ad ENTRY 0:000> al No aliases