2014-03-18 70 views
1

我在使用gdb在emacs中調試Fortran代碼時遇到問題。使用gdb在Emacs中調試Fortran代碼

Gdb啓動正常,程序加載OK並停在第一個斷點上,我在開始main處設置了第一個斷點。然後當我輸入n轉到下一行時,程序繼續運行(就像我輸入c一樣),而不是轉到下一行。爲了解決這個問題,我進一步設置了另一個斷點。打到c後(在main的第一個斷點處),代碼跳到並停在後面的斷點處(這正是我想要的)。

但是,此時,我不能再輸入gdb命令,因爲源代碼已移至頂部窗口,並且輸出至底部窗口(而通常所有gdb輸入命令和程序輸出發生在頂部窗口,源代碼在底部遍歷)。所以現在在這個時候,當我輸入gdb命令時,它成爲源代碼的一部分,我無法通過nc等瀏覽它 - 代碼中有一堆nc

我正在運行Fedora 18和GNU Emacs 24.3.1。另外,要在emacs中運行gdb,它堅持使用開關-i=mi。在我點擊M-x gdb後,底部的線條彈出爲:Run gdb (like this): gdb -i=mi ...。我試圖玩弄開關,如-annotate=3無濟於事。

+0

它從一個shell(沒有Emacs)工作正常嗎?你使用哪種Fortran編譯器? – Peter

+0

嗨,感謝您的回覆。它在沒有shell的情況下工作正常,從命令行不在emacs中。我正在使用gfortran v。4.8.2。也許我會嘗試另一個編譯器。 – jdeckman

+0

當您直接使用gdb時,您的Emacs是否從與gdb相同的shell啓動? – Peter

回答

0

如果我理解正確,在emacs中只能打開兩個窗口,發生的情況是輸出和源代碼緩衝區已經替換了gdb命令緩衝區。

你可以用C-X B* gud- PROGRAMNAME *RET,其中PROGRAMNAME是要調試的程序的名稱切換回gdb命令緩衝區。你可能會發現創建一個新窗口並切換到gdb命令緩衝區很有幫助。

發生這種情況是因爲gdb模式不夠聰明,無法將命令窗口保持在最前。您可以使用M-x gdb-many-windows這可以改進這一點。

Thesetwo問題也可能幫助您。

+0

太好了,謝謝你的回覆和幫助! – jdeckman