Debugging 用gdb调试Emacs中的Fortran代码

Debugging 用gdb调试Emacs中的Fortran代码,debugging,emacs,gdb,fortran,fortran90,Debugging,Emacs,Gdb,Fortran,Fortran90,我在使用gdb调试emacs中的Fortran代码时遇到问题 Gdb启动正常,程序加载OK并在第一个断点处停止,我在开始时设置了main。然后,当我键入n转到下一行时,程序将一直运行(就像我键入c),而不是转到下一行。为了解决这个问题,我在更下方设置了另一个断点。在点击c(在main中的第一个断点处)后,代码跳转到后一个断点并停止(这就是我想要的) 然而,在这一点上,我不能再输入gdb命令,因为源代码已经移动到顶部窗口,输出到底部窗口(而通常所有gdb输入命令和程序输出都发生在顶部窗口,并且源代

我在使用gdb调试emacs中的Fortran代码时遇到问题

Gdb启动正常,程序加载OK并在第一个断点处停止,我在开始时设置了
main
。然后,当我键入
n
转到下一行时,程序将一直运行(就像我键入
c
),而不是转到下一行。为了解决这个问题,我在更下方设置了另一个断点。在点击
c
(在
main
中的第一个断点处)后,代码跳转到后一个断点并停止(这就是我想要的)

然而,在这一点上,我不能再输入gdb命令,因为源代码已经移动到顶部窗口,输出到底部窗口(而通常所有gdb输入命令和程序输出都发生在顶部窗口,并且源代码在底部遍历)。现在,当我输入gdb命令时,它就成为了源代码的一部分,我不能用
n
c
之类的东西来浏览它-相反,代码中有一堆
n
c


我正在运行Fedora 18和GNU Emacs 24.3.1。另外,为了在emacs中运行gdb,它坚持使用开关
-I=mi
。在我点击
M-xgdb
后,底部的一行弹出为:
运行gdb(如下所示):gdb-I=mi…
。我尝试过使用开关,例如
-annotate=3
,但没有效果。

如果我理解正确,emacs中只有两个窗口打开,发生的情况是输出和源代码缓冲区已经替换了gdb命令缓冲区

您可以使用C-x b*gud programname*RET切换回gdb命令缓冲区,其中programname是您正在调试的程序的名称。您可能会发现创建一个新窗口并切换到该窗口中的gdb命令缓冲区很有帮助

这是因为gdb模式不够聪明,无法将命令窗口保持在顶部。您可以在许多窗口中使用M-x gdb,这在这方面有所改进


问题也可能有帮助。

它在shell中是否正常工作(没有Emacs)?您使用哪种Fortran编译器?您好,谢谢您的回复。它在没有shell的情况下可以从命令行正常工作,只是在emacs中不行。我用的是gfortran v。4.8.2. 也许我会尝试另一个编译器。当直接使用gdb时,您的Emacs是从同一个shell启动的吗?您是指bash shell中的shell吗?两者都是从bash命令行启动的。