(repost)gdb 调试 no debugging symbols_debian gdb 调试 安装的某命令提示no debugging symbols found
目录
本文为摘录(或转载),侵删,原文为: https://blog.csdn.net/amberman/article/details/129168834
原文: https://blog.csdn.net/amberman/article/details/129168834
项目中使用 Clang++编译后,通过 GDB 调试时出现 DwarfError:DW_FORM_strx1foundinnon-DWOCU 错误。问题根源在于调试信息格式版本不匹配。经过研究 Clang++的编译选项,选择-gdwarf-4 参数成功解决了调试符号未找到的问题。此问题可能出现在 GCC、G++、Clang 及 Clang++等编译器与 GDB 的版本差异上。
记录一下:项目遇到使用 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 来调试时都有可能遇到这样的问题,两边都有版本升级,就会导致里面的格式版本就可能不一样了。