Ubuntu 20.04下gdb调试helloworld出现CRC mismatch警告如何解决
解决方案
原因说明
该警告是系统中存储的ld-2.31.so调试信息文件与实际运行的ld-linux-x86-64.so.2动态链接器文件CRC校验不匹配导致的,通常由多架构(i386/amd64)包版本不一致、调试符号包安装错误触发。
解决步骤
- 第一步:卸载所有不匹配的libc相关冲突包
若卸载libc6-amd64:i386时提示依赖lib64ncurses系列包失败,先执行sudo apt purge lib64ncurses*:i386,再执行以下命令:sudo apt purge libc6-amd64:i386 libc6-dev-amd64 libc6-dbg:* - 第二步:修复系统依赖
sudo apt --fix-broken install sudo apt autoremove - 第三步:安装对应架构的正确glibc调试包
针对x86_64架构的Ubuntu 20.04,直接安装amd64版本的对应包即可:sudo apt install libc6:amd64 libc6-dev:amd64 libc6-dbg:amd64 - 第四步:校验版本一致性
执行以下命令确认两个文件版本匹配:
输出版本均为2.31且归属包为# 查看实际运行的动态链接器版本 /lib64/ld-linux-x86-64.so.2 --version # 查看调试文件归属的包版本 dpkg -S /lib64/ld-2.31.solibc6:amd64即修复完成。
临时绕过方案
如果你不需要调试glibc本身的代码,不需要调试动态链接过程,可直接在gdb中关闭该警告,不影响自身编写程序的调试:
在gdb交互界面执行:
set debug-file-directory /usr/lib/debug
将上述配置写入~/.gdbinit文件可永久生效。
内容的提问来源于stack exchange,提问作者twisted
相关产品推荐
相关产品推荐

