问题现象

日前在CentOS 6虚拟机上使用gdb调试一个由简单的.c文件编译生成的可执行程序遭遇如下gdb报错

Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.212.el6_10.3.i686.rpm

搜寻开头的关键词可以在百度上搜到不少相关的解决方案,但内容实则千篇一律,且并没有解释问题背后的原因所在。本文在此将对该问题进行一定的程度的剖析并给出另外一套暴力与直接的解决方案。

问题原因

首先,根据报错的字面意思即在调试过程中缺失独立的调试信息,那何为“独立的调试信息”?学过C语言的朋友都知道,如果编写代码后使用gcc编译器进行编译时,若不加上-g编译参数,或后期使用strip工具进行二次处理,生成的二进制文件中将不带调试段信息,而gdb的调试都是基于该调试段进行的,在linux世界这部分内容往往也被称作debuginfo。

其次,各大发行版提供的二进制软件包为了缩小体积,且用户往往不需要对软件(包括内核、libc这类基础设施)本身进行调试,因此往往不带调试信息。由于在Linux环境下绝大部分程序都依赖于libc(包括最简单的hello world),若系统预装的libc未带调试段信息,将影响gdb对目标程序进行调试操作。

解决方案

常规解决方案

其实对linux有所了解的同学看到该报错的第一反应就是执行报错信息中提示的可解决该问题的命令行,笔者也是这么一个机智的好少年,但不幸的是这台机子上并没有安装debuginfo-install命令,且安装完debuginfo-install命令后,又产生了其他奇奇怪怪的问题导致该命令不能正常执行,因此网上搜到的方法就失效了。

那么问题来了,这个命令到底执行了什么操作呢?debuginfo-install是yum的一个子命令,但CentOS似乎不会预装该命令,需自行先安装其所在的yum-util软件包,其功能顾名思义是专门用于安装软件包的debuginfo,即根据传入参数中的报名,搜寻软件源上对应的debuginfo软件包,然后下载并安装。如此一来,由于笔者的虚拟机不能直接连通外网,即便该命令可正常执行也不能正确安装对应的debuginfo包。

暴力解决方案

常规的解决方案虽然不能解决笔者的问题,但清楚问题的来龙去脉后,依旧可以轻松地解决问题。具体为:

  • 登录CentOS官方的debuginfo下载源:http://debuginfo.centos.org/
  • 下载对应的rpm包。debuginfo需要和系统中的既有的软件包对应,最简单的识别方法是寻找名称最为相近的,二者的差别往往为前者仅在名字中添加了一个“debuginfo”单词,以笔者遭遇的情况为例,对应的debuginfo软件包为:http://debuginfo.centos.org/6/i386/glibc-debuginfo-2.12-1.212.el6_10.3.i686.rpm,此外还需要下载glibc-common对应debuginfo软件包,glic-common软件包的数字标号部分与glic相同,上述情况为例,对应的debuginfo软件包为glibc-debuginfo-common-2.12-1.212.el6_10.3.i686.rpm。
  • 将下载好的两个rpm软件包拷贝至虚拟机中,使用rpm -ivh命令,依次安装glibc-common与glibc对应的debuginfo包,即可完美解决问题!

【全网最暴力解决方案】使用gdb调试时遭遇“Missing separate debuginfos, use: debuginfo-install glibc....”报错信息相关推荐

  1. jenkin构建报错信息及解决方案

    报错信息1:Exception when publishing, exception message 最近一直在做Jenkins项目,也经常会出现一些报错信息,今天在测试的时候出现了下面的报错信息,所 ...

  2. gdb调试时,Program received signal SIGPIPE, Broken pipe.

    今天在gdb调试时,发现总是出现Program received signal SIGPIPE, Broken pipe,搜索了网上的资料,发现是在调试时,接收到了SIGPIPE这个signal信号导 ...

  3. Android移动开发-AndroidStudio调试安装时出现“Error running app: Default Activity Not Found”报错的解决方案

    如果在AndroidStudio调试安装程序时,如果程序中没有Activity的代码文件的话可能会在程序部署到手机或虚拟机上时碰到"Error running app: Default Ac ...

  4. Linux——gdb调试时多进程切换方法(attach/follow-fork-mode)

    对于程序中创建子进程的情况,进行gdb调试时会默认选择父进程进行调试,假如需要对子进程进行调试就需要使用特殊方法. 共有两种方法可供选择: 目录 一.attach子进程PID ①.运行进程 ②获取进程 ...

  5. gdb调试时的问题Missing separate debuginfos use debuginfo-install

    在CentOS6.4下使用gdb进行调试的时候, 使用bt(breaktrace)命令时,会弹出如下的提示: 头一天提示: Missing separate debuginfos, use: debu ...

  6. CentOS环境下,gdb调试中出现:Missing separate debuginfos, use: debuginfo-install.....的问题

    在gdb调试时segmentation fault问题时,遇到下面的了问题: Program received signal SIGABRT, Aborted. 0x00007ffff73eb925 ...

  7. gdb调试问题Missing separate debuginfos, use: debuginfo-install

    在做GDB调试的时候,出现这样一个提示: Missing separate debuginfos, use: debuginfo-install cyrus-sasl-lib-2.1.26-20.el ...

  8. Navicat 用ssh通道连接时总是报错 (报错信息:SSH:expected key exchange group packet form serve...

    转:https://blog.csdn.net/qq_27463323/article/details/76830731 之前下了一个Navicat 11.0 版本 用ssh通道连接时总是报错 (报错 ...

  9. 部署YApi时,出现报错信息:Accessing non-existent property ‘count‘ of module exports inside circular dependency

    部署YApi时,出现报错信息:Accessing non-existent property 'count' of module exports inside circular dependency ...

最新文章

  1. baidumap api MySQL_百度地图API开发笔记一(基础篇)
  2. 汉字的奥秘: 获取汉字的笔画数
  3. python ftp模块_python中的FTP文件模块
  4. 对某bc站的一次渗透测试
  5. 第06课:动手实战基于 ML 的中文短文本分类
  6. java ee打印功能_Java EE 8的前5个新功能
  7. ubuntu 安装 swoole 和mac 安装swoole 扩展
  8. First集、Follow集
  9. Softmax 回归的从零开始实现 pytorch
  10. ffmpeg多路同时推流
  11. qq西游服务器制作教程,QQ西游修罗版开区一键服务端+完整客户端+GM辅助工具+教程...
  12. 2018最新最全1803win10专业版,教育版,企业版和ltbs密钥分享
  13. 干货满满的深度强化学习综述(中文)
  14. OpenCV_tutorials 04 imgproc module - Affine Transformations
  15. 计算机网络:随机访问介质访问控制之CSMA/CA协议
  16. 微信公众号教程(4)微信公众平台编辑模式介绍
  17. 什么是信噪比?信噪比越大好还是越小好?
  18. 百度网盘上传慢的解决方法
  19. python实现俄罗斯方块小游戏
  20. python remi库官网_诺禾致源2020:诺禾分享:python的Remi库

热门文章

  1. 电商新系统如何应对峰值
  2. windows 程序设计 第一章
  3. 别再说自己不会了!2021年教你增加拿到BAT等大厂offer几率,醍醐灌顶!
  4. python下载视频工具
  5. 计算机科学与技术专业二本学校排名,二本计算机专业大学哪所最好?最好二本计算机类大学排名如何...
  6. 统计单表中时间有重叠的数据--同一人出入院时间重叠
  7. CloudSim Plus能耗仿真(一)
  8. JS阻止form表单提交失败
  9. 学习笔记之在eclipse中,使用ADT开发
  10. #define的用法