Debugging Tools for Windows |
符号用来直接操作被调试程序的助记符(tokens)。例如,可以通过命令bp main 来在main函数上设置断点,或者使用dd MyInt L1命令来显示整数变量MyInt 的值。
很多情况下,符号可以作为调试器命令的参数。可以支持大多数数字参数,以及一些文本参数。除了常规的符号语法之外,也有一些适用于各种单独情况的语法规则。
符号名由一个或多个字符组成,但是总是以字母、下划线(_)、问号(?)或美元符号($)开头。
符号名可以用模块名来进行限制。使用一个感叹号(!)来分隔模块名和符号(例如,mymodule!main)。没有使用模块名的时候,符号也可以用感叹号作为前缀。即使对于局部变量,使用不带模块名的感叹号也尤其有用,它可以向调试器命令指明某个参数是一个名字而不是16进制数字。例如,如果没有加上感叹号前缀或者
符号名是完全不区分大小写的。这意味着如果程序中同时存在myInt 和MyInt ,不能被调试器正确识别;不管怎么写,访问它们的命令都有可能访问到另外一个。
调试器可以识别两种不同的表达式:Microsoft宏汇编(MASM)表达式和C++表达式。由于和符号相关,这两种语法形式有以下区别:
关于如何使用每一种语法的说明,查看表达式求值。
如果使用MSAM表达式语法,任何可以被解释为16进制数或寄存器的符号(例如,BadFeed, ebX)都必须用感叹号作为前缀。这能确保调试器将它识别为符号。
ss (Set Symbol Suffix)命令可以用来设置符号后缀。这使得调试器在找不到符号的情况下自动在符号名后添加"A" 或者"W"。
很多Win32函数存在ASCII和Unicode版本。这些函数的名字后被分别添加了"A" 或"W"。使用符号后缀可以帮助调试器搜索这些符号。
后缀匹配默认没有激活。
符号可以用于一些命令的文本参数 — 例如bm (Set Breakpoint)和x (Examine Symbols)。
这些文本参数支持很多通配符和说明。查看字符串通配符语法获取详细信息。除标准字符串通配符之外,用来指定符号的文本表达式也可以使用一个下划线作为前缀。当对这样的符号进行匹配时,调试器把它当作任意数量的下划线,包括零。
匹配文本表达式中的符号时,不会使用符号后缀。