我在 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