addr2line - Converts addresses into filenames and line numbers

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) 

addr2line - Converts addresses into filenames and line numbers

1. addr2line 的作用

  将指定地址转换为对应的文件名和行号, 常用于分析和定位内存访问错误的问题.

2. addr2line 的用法

  addr2line [option(s)] [addr(s)]
如果在命令行上未指定地址, 将从标准输入中读取地址.

  1. 开启core dump选项
ulimit -c unlimited
  1. 运行程序, 崩溃时生成core文件
// 编译该程序时需要加上-g选项
./a.out
  1. 读取core文件, 获取IP寄存器的值
dmesg
  1. 使用addr2line定位行代码
addr2line -e a.out 00005565569a160a -f

3. addr2line 的常用参数option(s)

参数/选项含义举个例子
-e --exe=< executable >设置输入文件名, 默认是a.outaddr2line -e ./file 0000555b68cf760a
-f --functions显示函数名addr2line -e ./file 0000555b68cf760a -f
-p --pretty-print更具有可读性addr2line -e ./file 0000555b68cf760a -fp

4. 建议

使用gdb进行调试和修复, 它不香吗?

Linux上Core Dump文件的形成和分析

该小结摘自: https://blog.51cto.com/baidutech/904419

Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core进程的内存空间越大,此过程可能持续很长一段时间(例如当进程占用60G+以上内存时,完整Core文件需要15分钟才能完全写到磁盘上),这期间产生的流量损失,不可估量。

凡事皆有两面性,OS在出Core的同时,虽然会终止掉当前进程,但是也会保留下第一手的现场数据,OS仿佛是一架被按下快门的相机,而照片就是产出的Core文件。里面含有当进程被终止时内存、CPU寄存器等信息,可以供后续开发人员进行调试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安河桥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值