符号和符号标记
编译程序相关的调试信息存储在程序数据库 (.pdb) 文件中,作为可使用调试接口访问 (DIA) SDK API 访问的符号。 所有符号都有 IDiaSymbol::get_symTag 和 IDiaSymbol::get_symIndexId 属性。 symTag
属性指示由 SymTagEnum Enumeration 枚举定义的符号类型。 symIndexId
属性是一个 DWORD
值,该值包含符号的每个实例的唯一标识符。
符号还具有一些属性,这些属性可以指定有关符号的其他信息以及对其他符号的引用,最常见的是 IDiaSymbol::get_lexicalParent 或 IDiaSymbol::get_classParent。 查询包含引用的属性时,该引用将作为 IDiaSymbol 对象返回。 此类属性始终与具有相同名称但带有后缀“Id”的另一个属性配对,例如,IDiaSymbol::get_lexicalParentId 和 IDiaSymbol::get_classParentId。 符号位置、符号类型的词法层次结构和符号类型的类层次结构表概述了各种不同类型的符号的属性。 这些属性可能包含有关其他符号的相关信息或对其他符号的引用。 由于 *Id
属性只是其相关属性的数字序数标识符,因此在后面的讨论中将省略它们。 它们只在需要说明参数时引用。
尝试访问属性时,如果未发生错误并且已为符号属性赋值,则该属性的“get”方法将返回 S_OK
。 返回值 S_FALSE
指示该属性对于当前符号无效。
本节内容
描述符号可以具有的不同类型的位置。
描述构成词法层次结构(如文件、模块和函数)的符号类型。
描述与不同语言元素(如类、数组和函数返回类型)对应的符号类型。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈