gdb 调试 no debugging symbols

项目中使用Clang++编译后,通过GDB调试时出现DwarfError:DW_FORM_strx1foundinnon-DWOCU错误。问题根源在于调试信息格式版本不匹配。经过研究Clang++的编译选项,选择-gdwarf-4参数成功解决了调试符号未找到的问题。此问题可能出现在GCC、G++、Clang及Clang++等编译器与GDB的版本差异上。
摘要由CSDN通过智能技术生成

记录一下:项目遇到使用clang++去编译一个项目,然后用gdb去调试。

在编译完成后,gdb启动时提示No debugging symbols found

查了很多原因,后来发现上面还有提示 如Dwarf Error: DW_FORM_strx1 found in non-DWO CU

再查了下Dwarf error,原来它是调试信息格式,再查下,也了解到调试信息格式有多到6个版本

于是去研究clang++的编译选项,发现确实可选,于是试了各种版本,终于在选择-gdwarf-4这个参数时,解决战斗。

总结:无论是gcc/g++ clang/clang++编译出来的信息需要用gdb来调试时都有可能遇到这样的问题,两边都有版本升级,就会导致里面的格式版本就可能不一样了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值