探索 DWARF 调试格式信息

DWARF是一种广泛使用的调试格式,支持源代码级别的调试。它通过调试信息条目(DIE)描述程序的低级表示,包括类型、变量和函数等。本文详细介绍了DWARF的组成部分,如.debug_abbrev和.debug_info,并通过实例解析了DWARF如何表示类信息、数组大小、函数参数、typedef、枚举值和继承等。
摘要由CSDN通过智能技术生成

https://www.ibm.com/developerworks/cn/aix/library/au-dwarf-debug-format/

简介

DWARF(使用有属性的记录格式进行调试 )是许多编译程序和调试程序所使用的一种调试文件格式,可以支持源代码级的调试。它是对象文件内的调试信息的格式。程序的 DWARF 描述是一个树形结构,每个节点都可以有子节点或兄弟节点。节点可能代表类型、变量或函数。

DWARF 使用一系列的调试信息条目(DIE)来定义源程序的一个低级表示。每个调试信息条目由一个识别标记和一系列属性组成。条目或条目组提供了在源程序中的相应实体的描述。标记指定了条目所属的类,而属性定义了条目的具体特点。

DWARF 部分

组成 DWARF 数据的不同 DWARF 部分如下:

.debug_abbrev 部分包含 DWARF 编译的所编译单元的缩写表。单个编译单元的缩写表包含一系列的缩写声明。每个声明都为一个特定的调试信息条目指定了标记和属性。缩写表中的相应条目会帮助您找到直接包含在 .debug_info 部分中的信息的解释。.debug_info 部分包含符号的原始信息。每个编译单元都与一个特定的缩写表关联,但多个编译单元可以共享同一个表。

DWARF 表示

有一些获得了许可的工具,比如 readelf、dwarfdump 和 libdwarf,它们可用于读取 DWARF 信息。脚本或程序可以读取这些工具的输出,以查找和解释所需的信息。重要的是知道编写此类脚本的标记和属性定义。

常用的标记和属性

下面的列表显示了在调试 C++ 应用程序时最受关注的标记。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值