首页  >   经验  >   Linux使用coredump文件调试系列:4 加载不出来调试信息的问题解决办法

Linux使用coredump文件调试系列:4 加载不出来调试信息的问题解决办法

查看 codexia 的博客 2018-12-14 10:58:07 676 会员文章,禁止转载
coredump  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介我们知道了如何调试coredump文件,却不知道为什么堆栈信息就是显示不出来。其实是少了一些东西,需要安装一下。但是这个安装过程又非常曲折,所以又从头到尾总结了一下。
感谢 阿里云 对本站(本站由阿里云高性能服务器搭建)的赞助支持,本站推荐 →高性能云服务器2折起优惠由此进←↓
高性能云服务器2折起

    在《Linux使用coredump文件调试系列3-使用GDB调试coredump》中,我们知道了如何调试coredump文件,却不知道为什么堆栈信息就是显示不出来。其实是少了一些东西,需要安装一下。但是这个安装过程又非常曲折,所以又从头到尾总结了一下。
1.系统缺少调试符号库信息
    对于centos系统来讲,很可能是没有的,至少我的是centos6.8就没有。所以会提示:

Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.209.el6_9.2.x86_64
    gdb告诉我要安装一个调试信息的库,一般叫做符号库。

    那么什么是符号库呢?简单来说,在生成调试信息的时候,编译器肯定不会说生成字符串来说明,所以一般都是二进制格式来存储,各个数值代表一定的意义。就好像你给每一个人编一个号,对应上一个名字,这样你就有一个姓名表。如果没有这个姓名表,你无法从一个序号里得知一个人的姓名的。符号库也是如此,如果没有符号库,你没有办法从堆栈信息里去找对应的函数名的。所以缺少符号库,尽管你开启了调试模式,内部是有一个堆栈,也有对应的函数的编号,但是你是不知道它是什么函数的,所以显示的都是问号,这样还怎么调试呢?

    如果你看到的堆栈里,所有的都是问号,那无疑就是缺少符号库
    还有一种情况,就是版本不对。这会导致一个问题,那就是函数名部分有,部分没有。当然这种情况就不好预测了,不同的库可能实现不一样,按照一个未知的不正确库去解析一个堆栈信息,自然可能错误千奇百怪了。
    而如果上一层的函数名能正常显示而底层的没有显示,很可能就是底层的符号库没有安装,而上层的符号库是有的。
    我们这里是要排除非调试版本程序的,因为非调试版不再我们的使用范围内,这样的版本都不带调试信息,如何调试呢?
    如果缺少符号库,gdb会做上面的提示的,我们按照提示来安装就好了。如果没有提示,你也自己安装一下。
2.安装符号库
    按照提示,我们去输入命令:

debuginfo-install glibc-2.12-1.209.el6_9.2.x86_64
    如果你成功安装了,那么请重新编译一下程序,然后再来调试。编译的时候会加载符号库,然后将必要的调试信息加入到程序里。然后你再验证是否可以显示堆栈的函数名称了。如果能正常显示,恭喜你,不用往下看了。但是如果安装过程中有问题,请继续看。
3.安装的时候提示找不到
    找不到我们要安装的东西,提示如下:

开通会员付1C币>>阅读全文
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. Linux使用coredump文件调试系列:4 加载不出来调试信息的问题解决办法 查找全网同类文章
  2. Linux使用coredump文件调试系列:3 使用GDB调试coredump 查找全网同类文章
  3. Linux使用coredump文件调试系列:2 编译可产生coredump文件的程序并测试 查找全网同类文章
  4. Linux使用coredump文件调试系列:1 设置生成coredump文件 查找全网同类文章
  5. 详解coredump-通过core文件来定位bug位置 查找全网同类文章
  6. 教你如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题 查找全网同类文章
  7. Linux源码笔记——感觉写的巧妙的代码 查找全网同类文章
  8. 在Win7上安装VS2015 RC(候选发布版)失败完美解决方法 查找全网同类文章
  9. 完全图解VS2017安装过程并演示VS2017创建Linux项目和调试 查找全网同类文章
  10. VS2015入门必备介绍,扫扫盲吧 查找全网同类文章
分享到:
分享文章[Linux使用coredump文件调试系列:4 加载不出来调试信息的问题解决办法]到QQ空间

相关阅读

猜您感兴趣