【问题标题】:Debugging Fortran code in Emacs with gdb使用 gdb 在 Emacs 中调试 Fortran 代码
【发布时间】:2014-04-24 20:18:46
【问题描述】:

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

Gdb 启动正常,程序加载正常并在第一个断点处停止,我在开头设置了 main。然后当我输入n 进入下一行时,程序继续运行(就像我输入了c),而不是进入下一行。为了解决这个问题,我进一步设置了另一个断点。在点击c 后(在main 的第一个断点处),代码跳到并停在后一个断点处(这是我想要的)。

但是,此时,我无法再输入 gdb 命令,因为源代码已移至顶部窗口,而输出已移至底部窗口(而通常所有 gdb 输入命令和程序输出都发生在顶部)窗口,以及底部遍历的源代码)。所以现在在这一点上,当我输入 gdb 命令时,它成为源代码的一部分,我无法使用 nc 等导航它 - 相反,代码有一堆 n 和 @ 987654329@在里面!

我正在运行 Fedora 18 和 GNU Emacs 24.3.1。此外,要在 emacs 中运行 gdb,它坚持我使用开关 -i=mi。在我点击M-x gdb 后,底部的行弹出为:Run gdb (like this): gdb -i=mi ...。我尝试使用开关,例如-annotate=3,但无济于事。

【问题讨论】:

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

标签: debugging emacs gdb fortran fortran90


【解决方案1】:

如果我理解正确的话,你在 emacs 中只打开了两个窗口,而发生的事情是输出和源代码缓冲区已经取代了 gdb 命令缓冲区。

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

发生这种情况是因为 gdb 模式不够聪明,无法将命令窗口保持在顶部。您可以使用 M-x gdb-many-windows 来改进这一点。

Thesetwo 问题也可能有帮助。

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 2012-09-24
    • 2023-03-13
    • 2016-12-06
    • 2013-01-07
    • 2013-09-29
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多