dwarf调试信息格式学习

5 篇文章 0 订阅
2 篇文章 0 订阅

背景:最近想在自己写的一个工具里dump任意的结构体数据,类似于gdb中,可以打印出结构体的格式和值, 但是发现普通的方式无法完成。那么就想到gdb是怎么做到的呢, 原来涉及到-g选项中增加的那些调试信息数据,所以就想开始分析ELF格式文件,然后就了解到DWARF格式的标准调试信息格式。还在入门中,这是一些初级的心得记录下。

dwarf标准网站: Dwarf Home

推荐一篇文章 《DWARF详解》 地址:   DWARF详解 - LLVM中文网, 其中对阅读DWARF4标准给出了导读提示,对于英文不好的同学,可以重点看下。

还有一篇文章写的也挺好,将基本的数据组织方式图形化表述了,即值存在在一起,对值的描述存储在一个节中。DWARF 中的 Debug Info 格式 - twoon - 博客园

其中标准的综述部分说明, 2-6节描述了DIE的结构关系,在第七节给出了debug信息的编码定义和方式。

因为同时看了ELF格式的标准和DWARF的格式标准, ELF在网上有中文的翻译版本,而且其前面即给出了具体的数据编码定义,例如elf的头信息在32位和64位具体如何定义,怎么查找节section和每种节的具体类型,偏移等。

而dwarf的标准,前面讲述的大多是DIE之间的关系,没有具体的编码定义,所以需要认真的阅读,才能理解。再去看后面第7节的数据定义,否则即使直接看第7节,依然无法看出全貌。

感叹:为啥信息行业老美牛,人家在80年代就开始搞标准,为了推广商业,搞一批人搞标准,现在我们只能按照这些标准来,内容都是大家可以理解的,但是语言是一大障碍。如果是中文写的,我想阅读,理解和实现起来难度也不会太大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值