gdb缺少debuginfo库的解决方法
在使用CentOS Linux release 8.4.2105版本的gdb调试程序时,弹出
Missing separate debuginfos, use: yum debuginfo-install libgcc-8.4.1-1.el8.x86_64 libstdc++-8.4.1-1.
看来是缺少相应的debuginfo库,首先尝试提示信息中的帮助,直接shell使用:
sudo yum debuginfo-install libgcc-8.4.1-1.el8.x86_64 libstdc++-8.4.1-1
输出:
enabling epel-modular-debuginfo repository
enabling epel-debuginfo repository
Extra Packages for Enterprise Linux Modular 8 - x86 5.3 kB/s | 1.5 kB 00:00
Extra Packages for Enterprise Linux Modular 8 - x86 314 kB/s | 113 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 - De 39 kB/s | 3.0 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 - De 1.8 MB/s | 4.8 MB 00:02
Last metadata expiration check: 0:00:01 ago on Wed 20 Oct 2021 03:43:36 PM CST.
Could not find debuginfo package for the following installed packages: libgcc-8.4.1-1.el8.x86_64, libstdc++-8.4.1-1.el8.x86_64
Could not find debugsource package for the following installed packages: libgcc-8.4.1-1.el8.x86_64, libstdc++-8.4.1-1.el8.x86_64
Dependencies resolved.
Nothing to do.
Complete!
查看提示信息发现并没有找到相应的库包,经过查阅网上资料,发现debuginfo-install这个脚本会去一个后缀为Debuginfo的仓库里去查找包(在我的机器上,这个仓库文件为CentOS-Linux-Debuginfo.repo),而这个仓库在很多发行版上默认是关闭的(体现在仓库配置文件里就是enbaled=0)
那么解决方法就是修改仓库配置文件,将enabled改为1,来启用仓库
解决过程
sudo vim /etc/yum.repos.d CentOS-Linux-Debuginfo.repo
发现里面果然enabled为0是关闭状态,改为1后保存。
再次调用
sudo yum debuginfo-install libgcc-8.4.1-1.el8.x86_64 libstdc++-8.4.1-1
成功安装!
然后进入gdb使用,发现又弹出其他信息
Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-151.el8.x86_64
看来还缺少一个库,继续安装
sudo yum debuginfo-install glibc-2.28-151.el8.x86_64
安装成功,gdb也使用正常了