【问题标题】:Emacs and gdb - Show code for function in backtraceEmacs 和 gdb - 在回溯中显示函数代码
【发布时间】:2016-06-02 11:35:15
【问题描述】:

我正在调试一个 C++ 程序。假设我正坐在 gdb 中的断点处,我执行bt 50。这将生成回溯并向我显示调用堆栈,其中包含 50 个函数,这些函数在执行过程中运行到现在的位置。

有时,我想快速检查回溯调用堆栈中某个函数的代码。我知道如何在 Visual Studio 上做到这一点。 Visual Studio 维护 call stack 类似于 gdb backtrace。在 Visual Studio 上,我只需双击调用堆栈中的一个函数,Visual Studio 就会将我带到该函数的代码,如果没有打开文件,甚至可以为我打开文件。很方便。

我想知道是否有一个 gdb 命令可以在回溯中显示符号名称周围的代码。目前,我知道的唯一方法是手动查找文件并在 emacs 中打开它,然后在 emacs 中进行搜索以将我带到该功能。请告诉我是否有更好的方法,使其变得像在 Visual Studio 中一样方便。

【问题讨论】:

    标签: c++ debugging visual-studio-2012 emacs gdb


    【解决方案1】:

    有多种选择,具体取决于您运行 gdb 的方式。

    一种简单的方法是在 emacs 中运行 gdb。您可以使用M-x gdb(或M-x gud-gdb,这有点老派)来做到这一点。在 emacs 中运行 gdb 时,只需选择一个框架将导致在 emacs 中访问源,并且点将移动到有问题的行。 “选择框架”可以通过updownframe 命令完成。

    如果您在 emacs 之外运行 gdb,并希望继续这样做,那么仍有选择。

    一种方法是edit 命令。确保将您的EDITOR 环境变量设置为使用emacsclient 并设置emacs 以响应此问题(如M-x server-start)。

    然后在 gdb 中,选择某个框架,您可以看到该框架的源代码为edit *$pc

    有些人喜欢的另一种方法是使用 gdb “tui”。这是一个基于 curses 的界面,在终端中显示源代码。

    另一种方法是使用众多 gdb GUI 中的一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2016-01-17
      • 2015-06-16
      相关资源
      最近更新 更多