linux addr2line命令学习

addr2line的使用,我们在
http://blog.csdn.net/boyxulin1986/article/details/11603353
这篇博文中简单介绍了如core dump/nm/readelf/ldd等linux工具的使用。
今天看来了addr2line,一开始还满心欢喜的以为这样就不需要根据shared library在进程虚拟地址空间
中的起始位置计算地址的偏移量了,但是发现也并不是这么回事。
但是善用一些已知的工具,总是能够帮助我们提高排查和解决问题的效率。

1. 如果在编译程序时,symbol被strip掉,那就无法使用addr2line来获得有效信息,strip -d libtest.so;
2. 如果你要查看的地址位于libtest.so,那首先要cat /proc/pid/maps来获取这个shared library在程序
虚拟地址空间中的起始地址,然后再算出当前地址的偏移量;
3. addr2line address -e libtest.so -f

addr2line参数解释:
-e,用来指定待转换的可执行文件的路径;
-f,用来显示文件名;

待解决问题:
通过实验,发现使用addr2line的实际测试结果竟然与预期不符,是哪里出错了吗?
1. 使用的addr2line不是对应于当前系统的addr2line吗?不同的系统,不同的toolchain,产生的可执行文件可能无法通用;
2. addr2line的结果有可能不是很准确,但是可以作为一个参考,有时候能起到辅助的作用。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值