我试图在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) .
我试图在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) .
最有可能你已经与海湾合作委员会的新版本编译的程序,但它的调试与旧的GDB。
否则,你有一个错误的GCC版本,它将不正确的调试信息放到你的可执行文件中。
使用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
标志。
'ld'手册页说'-g'被忽略。 – 2013-08-02 17:54:13
什么操作系统和CPU?您是否曾尝试使用简单的“Hello World”测试应用程序来运行gdb,以确保您的基本gcc/gdb工具链已安装并正常工作? – 2010-05-04 12:14:35