2012-12-19 71 views
6

我在其中一個應用程序中檢出了段錯誤。在啓動應用程序後不久,主gdb狀態欄變化:在emacs中使用gdb -i = mi集成

(調試器:運行[信號接收的])

(gdb)提示出現,但所有其他窗口的內容保持不變(空)。在提示符處鍵入任何內容都不會起作用 - gdb似乎掛起。在command line上運行相同的步驟會導致gdb的預期輸出帶有完整且正確的回溯。

這是我第一次用emacsgdb之間的集成-i=mi進行調試。我正在使用emacs 24.2和gdb 7.5。

有沒有關於如何進一步調試的建議?

是否可以降低集成度?這將允許我確定哪個區域導致問題?

最後一點是,應用程序的初始加載大約需要70s,而從command line開始的加載大約需要3s。

回答

8

加載時間可以通過將gdb-create-source-file-list設置爲nil(使用自定義)來減少。在某些情況下,請參閱文檔以瞭解它的作用以及它爲什麼會顯着增加加載時間。

+0

現貨。因爲這個原因,我實際上降級到了23個 - 所以希望現在我可以堅持使用最新版本。 –

8

您可以使用M-x gud-gdb來使用舊的gud模式(即沒有0​​交互)。花式較少但更可靠。

+0

感謝您的迴應。你的意思是'沒有'mi'互動嗎?也許我做錯了什麼,但'gud-gdb'模式看起來比'--annotate = 3'支持有了很大的提升。特別是調試位置和源之間的鏈接。有沒有辦法解決這個問題?當它停在斷點處時,我得到'^ Z^Z/home/richard /.../ main.cpp:235:5568:beg:0x80a17d3'。 –

+0

舊的'gdb-ui'模塊可以在emacs 24中工作嗎? –

+0

似乎答案是肯定的。 –

4

看來,gdb-ui從emacs的23將在Emacs 24仍然工作:

  • 找到gdb-ui複印件(在我的情況gdb-ui.el.gzgdb-ui.elc從備份)
  • 將這些放到一個目錄(我添加~/emacs-modes

然後將以下添加到您的.emacs:

(add-to-list 'load-path "~/emacs-modes") 
(require 'gdb-ui) 

運行gdb現在將使用舊的--annotate=3模式而不是-i=mi