今天在redhat6.3(32位)下使用gdb调试程序的时候,出现一段警告,在此总结出解决办法,方便后来的学者:
提示需要使用debuginfo安装glibc-2.12-1.212.el6.i686,但是这里有个问题:linux系统下有debuginfo吗?
我使用的是redhat6.3,用的是centos6的yum,是没有debuginfo的,不信的话,我们试验一下:
直接使用命令:debuginfo-install glibc-2.12-1.212.el6.i686 进行安装
出现:command not found 说明的确是没有debuginfo,那接下来问题变成如何安装debuginfo。
首先需要下载两个文件:
kernel-debuginfo-common-xxxxx
kernel-debuginfo-xxxx
用命令 :uname –r 查询linux的版本号
我的版本号为2.6.32-431.el6.i686,在开源镜像站查找以下两个文件:
kernel-debuginfo-common-2.6.32-431.el6.i686
kernel-debuginfo-2.6.32-431.el6.i686
去http://debuginfo.centos.org寻找和你内核完全匹配的rpm包。
然后安装两个包,首先安装kernel-debuginfo-common-2.6.32-431.el6.i686,然后安装kernel-debuginfo-2.6.32-431.el6.i686
使用命令:rpm -ivh kernel-debuginfo-common-2.6.32-431.el6.i686
rpm -vh kernel-debuginfo-2.6.32-431.el6.i686
安装完后更改配置文件CentOS-Base-debuginfo.repo。
发现该本机没有该配置文件,装完debuginfo后也没有出现诸如CentOS-Base-debuginfo.repo的文件,很明显,redhat不可能安装CentOS的配置文件,这里我们需要手动添加。
命令:vim /etc/yum.repos.d/CentOS-Base-debuginfo.repo
然后写入:
[base-debuginfo]
name=CentOS-$releasever - DebugInfo
baseurl=http://debuginfo.centos.org/$releasever/$basearch/
gpgcheck=0
enabled=1
protect=1
priority=1
注意,enabled=1,写到这里如果去执行debuginfo-install glibc,则会报出url错误!
如此,想起在配置CentOS的yum源时大家应该注意到将$releasever改成系统大版本号,所以(复制粘贴即可)
[base-debuginfo]
name=CentOS-6 - DebugInfo
baseurl=http://debuginfo.centos.org/6/$basearch/
gpgcheck=0
enabled=1
protect=1
priority=1
保存退出后执行 debuginfo-install glibc-2.12-1.212.el6.i686 发现问题:
这里提示CentOS-Base-debuginfo.repo文件第一行有错误,然后我又打开看看,发现第一行写错了,掉了 [ 这个符号,加上之后就ok了。
然后就是使用debuginfo安装glibc-2.12-1.212.el6.i686了。
最后使用gdb调试代码,完美解决。
参考链接:https://jingyan.baidu.com/article/37bce2be1839ca1003f3a253.html
http://blog.51cto.com/lddyw/1618505
https://blog.youkuaiyun.com/testcs_dn/article/details/19565411