2010-05-04 110 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