2010-05-04 112 views
1

我试图在gdb上运行我的应用程序。因此我使用'g'选项编译它。但是,当我跑步时我gdb ./app得到:gdb问题中的C程序调试

DW_FORM_strp pointing outside of .debug_str section [in module /home/w/app] 

我不能做任何破发:

(gdb) break main 
No symbol table is loaded. Use the "file" command. 
(gdb) . 
+1

什么操作系统和CPU?您是否曾尝试使用简单的“Hello World”测试应用程序来运行gdb,以确保您的基本gcc/gdb工具链已安装并正常工作? – 2010-05-04 12:14:35

回答

1

最有可能你已经与海湾合作委员会的新版本编译的程序,但它的调试与旧的GDB。

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

1

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

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

-g(或-g-dwarf2)编译放入每个目标文件 矮信息与它自己的.debug_str节串部分。

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

我们偶然将CC_FLAGS设置为makefile链接步骤。

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

+0

'ld'手册页说'-g'被忽略。 – 2013-08-02 17:54:13