Emacs和gdb - 在backtrace中显示函数的代码

时间:2016-06-02 11:35:15

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

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

有时候,我想快速检查一下回溯调用堆栈中的一个函数的代码。我知道如何在Visual Studio上执行此操作。 Visual Studio维护call stack类似于gdb backtrace。在Visual Studio上,我可以简单地双击调用堆栈中的函数,Visual Studio将我带到该函数的代码,即使没有打开也会为我打开文件。非常方便。

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

1 个答案:

答案 0 :(得分:1)

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

一种简单的方法是在emacs中运行gdb。您可以使用M-x gdb(或M-x gud-gdb,这是一个更老的学校)来做到这一点。在emacs中运行gdb时,只需选择一个框架就会导致在emacs中访问该源,并且point将移动到相关的行。 "选择框架"可以通过updownframe命令完成。

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

一种方法是edit命令。请务必将EDITOR环境变量设置为使用emacsclient并设置emacs以响应此情况(例如M-x server-start)。

然后在gdb中选择一些框架,您可以使用edit *$pc看到该框架的来源。

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

另一种方法是使用众多gdb GUI之一。