使用符号

有关符号的概述(包括使用符号文件和符号服务器),请参阅 符号

符号名称和位置

若要查找给定符号名称的位置,请使用 GetOffsetByName。 有关用于指定符号名称的语法的详细信息,请参阅 符号语法和符号匹配

如果符号的确切名称未知,或者多个符号具有相同的名称, 则 StartSymbolMatch 将开始搜索名称与给定模式匹配的符号。 有关语法的详细信息,请参阅 字符串通配符语法

若要查找给定其位置的符号的名称,请使用 GetNameByOffset。 若要在给定位置附近的模块中查找符号的名称,请使用 GetNearNamebyOffset

注意尽可能使用模块名称限定符号-例如 mymodule!main。 否则,如果符号不存在 (例如,由于排版错误) 引擎必须加载并搜索每个模块的符号;此过程可能很慢,尤其是对于内核模式调试。 如果符号名称已使用模块名称进行限定,则引擎只需搜索该模块的符号。

符号使用 结构DEBUG_MODULE_AND_ID进行唯一标识。 此结构由 GetSymbolEntriesByNameGetSymbolEntriesByOffset 方法返回,它们分别根据符号名称和位置搜索符号。

方法 GetSymbolEntryInformation 使用 DEBUG_SYMBOL_ENTRY 结构返回符号的说明。

若要查找结构中某个字段的偏移量,请使用 GetFieldOffset。 若要在结构中查找给定索引的字段的名称,请使用 GetFieldName。 若要查找给定值的枚举常量的名称,请使用 GetConstantName

方法 GetSymbolInformation 可以执行多个有关符号的信息请求。

符号选项

许多选项控制符号的加载和卸载方式。 有关这些选项的说明,请参阅 设置符号选项

符号选项可以使用 AddSymbolOptions 打开,而通过使用 RemoveSymbolOptions 关闭。

GetSymbolOptions 返回当前符号选项。 若要同时设置所有符号选项,请使用 SetSymbolOptions

重新加载符号

加载符号文件后,引擎将符号信息存储在内部缓存中。 若要刷新此缓存,请使用 重新加载。 现在或以后必须再次加载这些符号。

合成符号

合成符号 是标记任意地址以便于参考的一种方法。 可以在任何现有模块中创建合成符号。 AddSyntheticSymbol 方法创建新的合成符号。 可以使用 RemoveSyntheticSymbol 删除合成符号。 重新加载模块的符号会删除与该模块关联的所有合成符号。

符号路径

若要将目录或符号服务器添加到符号路径,请使用 AppendSymbolPath 方法。 整个符号路径由 GetSymbolPath 返回,可以使用 SetSymbolPath 进行更改。