C程序调试gdb问题

时间:2010-05-04 12:06:35

标签: gdb

2 个答案:

答案 0 :(得分:1)

很可能你已经用更新版本的GCC编译了你的程序,但是正在使用旧的GDB进行调试。

否则,您有一个错误的GCC版本,它会将不正确的调试信息放入您的可执行文件中。

答案 1 :(得分:1)

使用objdump -W查看Elf文件的Dwarf调试信息以查看.debug_str表。

每个DW_FORM_strp都是此表的偏移量。

使用-g(或-g-dwarf2)进行编译会将Dwarf信息放入每个目标文件中 有自己的.debug_str部分字符串部分。

使用-g链接这些目标文件会尝试创建唯一的字符串,并且不会正确更新所有DW_FORM_strp偏移量。看到gcc 4.3.4的ld。

我们将CC_FLAGS简化为makefile链接步骤。

解决方法:不要与-g标记链接。