设为首页 加入收藏

TOP

利用dmesg和addr2line来重现bug
2014-07-19 22:52:15 来源: 作者: 【 】 浏览:73
Tags:利用 dmesg addr2line 重现 bug

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

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

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

  命令格式:

  dmesg | grep program_name

  其中program_name是可执行文件,比如:

  $ dmesg | grep test_prog

  [103936.227079] test_prog[29319]: segfault at 40078c ip 0000000000400634 sp 00007fffe54d4680 error 7 in test_prog[400000+1000]

  其中的ip后面的地址是程序出错处的地址。

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

  紧接上面的例子:

  $ addr2line -e ./test_prog 0000000000400634 -f

  _Z9errorFuncv

   :0

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言获取文件名称system dir 下一篇C语言指针的初始化和赋值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)
·C语言指针的定义和使 (2025-12-26 05:21:31)
·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)