2013-06-30 36 views
2

我試圖調試我在d第一個程序使用調試DMD生成計劃通過GDB

dmd -debug hello.d 

編譯,但是當我通過GDB-7.6運行可執行程序,它似乎並不知道在哪裏可以找到源代碼並解碼堆棧跟蹤的格式(及其名稱 - demangling)。

是GDB調試DMD生成的可執行文件還不支持或我錯過了什麼嗎?

回答

8

-debug標誌表示啓用了調試代碼,這與調試符號不同。您正在尋找的國旗是-g-gc

有關編譯器標誌的更多信息,請參閱http://dlang.org/dmd-linux.html#switches

+0

好的。所以我添加了標誌'-gc',但它仍然不起作用。現在,它出現錯誤,警告:在0x7ffff7ffa000處添加的符號文件系統提供的DSO中找不到可加載部分。命令'break main'失敗,但在執行過程中按下Ctrl-C似乎會使gdb進入可用狀態。 –

+0

我通過Emacs運行GDB,並且棧幀的格式似乎也混淆了Emacs。我不能點擊它們來改變堆棧框架。至少當我按下Ctrl-C時,變量視圖似乎工作。 –

+0

只需檢查簡單的事情:「dmd -gc hello.d」會生成一個名爲「hello」的可執行文件。 「gdb ./hello」(直接從終端,讓我們暫時離開emacs)應該不會產生錯誤,除非可能要求安裝更多的調試庫。然後運行程序,就像在gdb中一樣。 –