如何在GDB中禁用CRC校验?解决符号文件CRC不匹配问题
GDB中禁用调试符号完整性检查的全局设置
问题场景
为部分调试符号文件添加符号索引后,GDB启动时出现如下告警:
warning: the debug information found in "/xxx/yyy/lib/debug/libzzz.so" does not match "target:/lib/libzzz.so" (CRC mismatch)
需要了解是否存在全局设置可禁用所有加载文件时的完整性检查。
解决方案
GDB提供了全局配置项来关闭这类符号完整性校验,具体操作方式如下:
临时生效(当前会话)
在GDB的交互终端中执行以下命令即可关闭所有符号检查:set symbol-checking off另外,也可以通过指定空的调试文件目录来绕过符号匹配,但这种方式会直接禁用调试符号的自动查找,不如上面的命令精准:
set debug-file-directory /dev/null永久生效(所有会话)
若希望每次启动GDB都自动关闭符号校验,可编辑用户主目录下的.gdbinit文件(不存在则新建),添加以下内容:set symbol-checking off
注意事项
禁用符号完整性检查后,GDB会强制加载找到的调试符号,即便它们和目标二进制文件不匹配。这可能导致调试过程中出现变量值显示错误、代码跳转位置异常等问题,仅在你确认调试符号可用且需要忽略CRC不匹配时使用。
内容的提问来源于stack exchange,提问作者Juergen
相关产品推荐
相关产品推荐

