博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用dmesg和addr2line来重现bug
阅读量:4221 次
发布时间:2019-05-26

本文共 555 字,大约阅读时间需要 1 分钟。

有些时候,我们的程序crash了,但是我们没有保存core dump信息,这时如果我们想要知道程序在哪个位置出错,就不是那么容易了。

下面有一种方法,可以大致判断出程序出错的大致位置。



1.用dmesg查找出错的代码段地址。

命令格式:

[plain]   
  1. dmesg | grep program_name  
其中program_name是可执行文件,比如:

[plain]   
  1. $ dmesg | grep test_prog  
  2. [103936.227079] test_prog[29319]: segfault at 40078c ip 0000000000400634 sp 00007fffe54d4680 error 7 in test_prog[400000+1000]  
其中的ip后面的地址是程序出错处的地址。


2.用addr2line将地址解析成函数名。

紧接上面的例子:

[plain]   
  1. $ addr2line -e ./test_prog 0000000000400634 -f  
  2. _Z9errorFuncv  
  3. ??:0  

其中errorFunc即是出错的函数名,然后就可以找到相应的出错代码了。

https://blog.csdn.net/cjfeii/article/details/20386457

你可能感兴趣的文章
Java并发编程从入门到精通 张振华.Jack --我的书
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第十二篇:世界上最快的捷径【张振华.Jack】
查看>>
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
《浪潮之巅》1 AT&T
查看>>
《浪潮之巅》2蓝色巨人 IBM公司
查看>>
《浪潮之巅》3水果公司的复兴
查看>>
《浪潮之巅》4计算机工业的生态链
查看>>
《浪潮之巅》5奔腾的芯 英特尔公司
查看>>
python语言程序设计基础笔记(三)从题目到方案
查看>>
读取txt文件出现出现多余空行问题
查看>>
从理论到实践开发自己的聊天机器人
查看>>
@***装饰器(python)
查看>>
我的2020
查看>>
2.3 WSN的MAC协议
查看>>
栈与队列的应用——计算表达式的值
查看>>
BFS——求矩阵中“块”的个数
查看>>
BFS——走迷宫的最小步数
查看>>
并查集——好朋友
查看>>
关键路径
查看>>