gdb运行时出错 use debug info-install libgcc-4.4.7-3.el6.i686 ...

我在 centos6.4上安装了gcc4.8.0,第一次使用gdb进行代码调试时遇到如下问题:

Missing separate debuginfos, use: debuginfo-install libgcc-4.4.7-3.el6.i686 libstdc++4.4.7-3.el6.i686

解决方法:

1. 执行debuginfo-install libgcc-4.4.7-3.el6.i686 libstdc++4.4.7-3.el6.i686

但是会遇到找不到pkg的问题:

Could not find debuginfo for main pkg: libgcc-4.4.7-3.el6.i686

Could not find debuginfo for main pkg: libstdc++4.4.7-3.el6.i686

2. 由于centos 官方网站提供了所有这些pkg文件,都是rpm格式的,所以需要手动进行rpm文件的抓取:

rpm -i http://debuginfo.centos.org/6/i386/gcc-debuginfo-4.4.7-3.el6.i686.rpm

就会开始下载这个rpm文件

 

gcc-debuginfo-4.4.7-3.el6.i686.rpm 23-Feb-2013 17:47 94M

不过从终端中是看不到这个下载安装过程的,你可以通过系统监视器看到网络流量和CPU的变化。

OK,开始gdb run!

但是。。。。。。。。。

又遇到问题啦,可以进入debug,但是始终debug有问题,比如:

1. 查看变量 print i 出现 no symbol in current context

2. 无法正常step into某个函数,也就是s 命令无法正常执行。

Google一下,各种解释啊,比如链接时没有指定 -g 选项, 加了-O选项等等.

然后各种尝试,还是不行,回头看其实我的编译链接都是正确的,也就是说既有-g选项,也没有做任何optimization。那为什么就是不行呢?

继续Google,发现一个有用的提示http://blog.csdn.net/kedacom_com/article/details/8917800

gcc 与 gdb版本不匹配

于是gdb -v 发现我的gdb版本是7.2, 而如上所述,我的gcc 版本是4.8.0

而GNU网站上的 gdb最新版本是7.6,http://mirror.bjtu.edu.cn/gnu/

于是:

1. 卸载之前的gdb:

先获取root权限:$ su 并输入密码

然后:$ yum remove gdb

2. 下载gdb-7.6.tar.gz,解压缩并安装:

$ cd gdb-7.6

$ ./configure

$ make

(编译过程中如果有error发生,一般是因为库依赖的问题,所以先下载安装所依赖的库。)

3. 然后安装

$ make install

安装完成后,执行

$ gdb -v

查看gdb版本信息,发现是7.6版本。

最后测试debug,完全正常工作!

搞定!

 

BR, Eric

 

 

posted @ 2013-05-25 08:31  Eric Z  阅读(1304)  评论(0编辑  收藏  举报