寻找libdwarf

本文介绍了如何在Pin工具中获取程序的调试信息,特别是针对数据符号的需求。文章提到了libelf和libdwarf的作用,并指出libdwarf需要gcc的-g选项生成的DWARF格式调试信息。由于SGI的libdwarf不再维护,作者从SourceForge找到了新的libdwarf库并成功在Debian系统中安装。尽管遇到依赖问题,但最终通过dpkg命令行安装解决了问题。作者还提到,libdwarf的API文档可在安装包的/usr/share/doc/libdwarf_dev目录下找到。除了libdwarf,其他能读取DWARF格式的工具有readelf、gdb和dwarfdump,但libdwarf更适合编程需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 因为需要得到程序中,地址到符号的映射信息;而Pin只提供函数符号的信息,不提供其它符号,比如数据符号的信息,所以需要访问目标文件的调试信息。

2. 在Pin的讨论组中,发现需要libelf和libdwarf来访问其它符号。据论坛所说,libelf访问任意ELF文件的符号信息(比如全局变量的信息),而libdwarf提供更多的访问功能——但是有个条件,其目标文件需要gcc的-g选项(-g选项默认生成DWARF格式的调试信息)。并且,http://wiki.dwarfstd.org/index.php?title=Main_Page(该链接来自DWARF官网)以及一些用户推荐使用SGI的libdwarf实现。

3. 但是,SGI已经放弃了对libdwarf的支持。并且,上述推荐给出的链接http://reality.sgiweb.org/davea/dwarf.html已经失效(也有可能是服务器挂了?)。所以,放弃。后来,在google中用“open source libdwarf”搜索,找到了libdwarf的新的官网,在source forge上面(参考11)。可以使用一下命令下载libdwarf的源码:

git clone 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值