如果命令开头出现两个美元符号( $$ ),则该行剩下的部分被当成注释,除非碰到分号,$$ 关键字使得后面的文本被忽略掉,直到行末或者碰到分号。分号结束注释;分号后的文本被解析为标准的命令
如果命令开头带星号( * )字符,则行中剩下的部分被当成注释,即使中间有分号
0:000> r eax; $$ some text; r ebx; * more text; r ecx eax=00000000 ebx=00000000
以下是显示eax,ebx,但不显示ecx
.echo命令显示注释字符串
.echo "String"
0:000> .echo hgy ,h'gy hgy ,h'gy 0:000> .echo "hgy ,h'gy" hgy ,h'gy
2.如果用双引号括起来,就可以包含分号,但不能包含其他双引号
0:000> .echo "hgy ,h'gy" hgy ,h'gy 0:000> .echo "hgy ,h'gy;;" hgy ,h'gy;; 0:000> .echo "hgy ,h'gy;;"" ^ Malformed string in '.echo "hgy ,h'gy;;""'
3.如果不用双引号,可以在除了第一个字符的任意位置包含双引号(如果是第一个字符,那就成用双引号的表示形式了!),但是不能包含分号,分号是用来分隔.echo和后面命令的
0:000> .echo hgy ,h'gy"" hgy ,h'gy"" 0:000> .echo hgy ,h'gy";" hgy ,h'gy" ^ Syntax error in '.echo hgy ,h'gy";"' 0:000> .echo hgy ,h'gy""; hgy ,h'gy""
.echo 命令和$$ (Comment Specifier)关键字以及* (Comment Line Specifier)关键字不同,因为这些关键字会使得调试器忽略输入的文本而不会显示出来,而.echo会立即显示.
.echo可以用于条件语句中:
0:000> bu kernel32!LoadLibraryW "as /mu ${/v:$str} dwo(esp+4);.block{.if(1==$spat(@\"$str\", \"*mm*\")){.echo \"ok\";dds}.else{gc}}" breakpoint 0 redefined 0:000> bl 0 e 7627ef42 0001 (0001) 0:**** kernel32!LoadLibraryW "as /mu ${/v:$str} dwo(esp+4);.block{.if(1==$spat(@\"$str\", \"*mm*\")){.echo \"ok\";dds}.else{gc}}" 2 e 014f418a 0001 (0001) 0:**** VerifyTxSignDemo!VerifyEmbeddedSignatureW+0xea 0:000> g *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\COMCTL32.dll - ok 7627ef42 8b55ff8b 7627ef46 6a006aec 7627ef4a 0875ff00 7627ef4e ffffcce8 7627ef52 04c25dff 7627ef56 90909000 7627ef5a 25ff9090 7627ef5e 76231b54 kernel32!_imp__FreeLibrary 7627ef62 90909090 7627ef66 55ff8b90 7627ef6a eb5dec8b 7627ef6e 909090ed 7627ef72 ff8b9090 7627ef76 5dec8b55 7627ef7a 909005eb 7627ef7e ff909090 7627ef82 2318d425 7627ef86 90909076 7627ef8a 25ff9090 7627ef8e 76231d1c kernel32!_imp__GetEnvironmentVariableW 7627ef92 90909090 7627ef96 55ff8b90 7627ef9a b70fec8b 7627ef9e c9330c45 7627efa2 0f084d39 7627efa6 ff2d7384 7627efaa 0fc13bff 7627efae ff2d6b84 7627efb2 ffff3dff 7627efb6 0a740000 7627efba 040c45f6 7627efbe 2d4d850f eax=00000001 ebx=00000001 ecx=77da6833 edx=77c87094 esi=77da67cf edi=00000000 eip=7627ef42 esp=001bf958 ebp=001bf978 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 kernel32!LoadLibraryW: 7627ef42 8bff mov edi,edi 0:000> du dwo(esp+4) 750c4e00 "imm32.dll"