浏览 DWARF 调试格式信息
介绍
DWARF(使用属性化记录格式进行调试)是许多编译器和调试器用来支持源代码级调试的调试文件格式。它是调试目标文件中信息的格式。程序的 DWARF 描述是一个树结构,其中每个节点可以有子节点或同级。节点可能表示类型、变量或函数。
DWARF 使用一系列调试信息条目 (DIE) 来定义源程序的低级表示形式。每个调试信息条目都包含一个标识标记和一系列属性。一个条目或一组条目一起提供源程序中相应实体的说明。标记指定条目所属的类,属性定义条目的特定特征。
DWARF section
构成矮人数据的不同矮人部分是:
.debug_abbrev | .debug_info 部分中使用的缩写 |
.debug_aranges | 用于将地址映射到编译单元的查找表 |
.debug_frame | 呼叫帧信息 |
.debug_info | 核心矮人信息部分 |
.debug_line | 行号信息 |
.debug_loc | 属性中使用的位置列表 DW_AT_location |
.debug_macinfo | 宏信息 |
.debug_pubnames | 全局对象和函数的查找表 |
.debug_pubtypes | 全局类型的查找表 |
.debug_ranges | 属性中使用的地址范围 DW_AT_ranges |
.debug_str | 中使用的字符串表.debug_info |
.debug_types | 类型说明 |
本节包含 DWARF 编译的所有编译单元的缩写表。单个编译单元的缩写表由一系列缩写声明组成。每个声明指定特定调试信息条目的标记和属性。缩写表中的相应条目指导对该部分中直接包含的信息的解释。该部分包含有关符号的原始信息。每个编译单元都与特定的缩写表相关联,但多个编译单元可以共享同一个表。.debug_abbrev.debug_info.debug_info
常用标签和属性
以下列表显示了调试 C++应用程序时最感兴趣的标记。
DW_TAG_class_type | 表示类名和类型信息 |
DW_TAG_structure_type | 表示结构名称和类型信息 |
DW_TAG_union_type | 表示联合名称和类型信息 |
DW_TAG_enumeration_type | 表示枚举名称和类型信息 |
DW_TAG_typedef | 表示类型定义名称和类型信息 |
DW_TAG_array_type | 表示数组名称和类型信息 |
DW_TAG_subrange_type | 表示数组大小信息 |
DW_TAG_inheritance | 表示继承的类名和类型信息 |
DW_TAG_member | 表示类的成员 |
DW_TAG_subprogram | 表示函数名称信息 |
DW_TAG_formal_parameter | 表示函数参数的信息 |
DW_AT_name | 表示名称字符串 |
DW_AT_type | 表示类型信息 |
DW_AT_artificial | 由编译器创建时设置 |
DW_AT_sibling | 表示同级位置信息 |
DW_AT_data_member_location | 表示位置信息 |
DW_AT_virtuality | 在虚拟时设置 |
本文作者:第9527号嵌入式菜鸟
本文链接:https://www.cnblogs.com/zhouxingxing7920/p/17630723.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步