答案 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
标记链接。