Debugging 在给定断点周围使用GDB查看代码进行调试 我试图用GDB调试一个C++程序。我设置了15个断点。大多数断点位于不同的文件中。在前5个断点之后,很难记住任何给定断点所指的代码行

Debugging 在给定断点周围使用GDB查看代码进行调试 我试图用GDB调试一个C++程序。我设置了15个断点。大多数断点位于不同的文件中。在前5个断点之后,很难记住任何给定断点所指的代码行,debugging,emacs,gdb,breakpoints,Debugging,Emacs,Gdb,Breakpoints,我很难简单地回忆起给定断点所指的内容。我觉得这很让人分心。我想知道是否有一种方法可以告诉gdb在某个断点周围显示代码 类似这样的代码-$(gdb)代码3在断点3周围显示了30行代码。今天可能吗。你能告诉我怎么做吗 我在tui模式下运行gdb,并且我还保持emacs打开以编辑我的源文件。您可以在emacs中使用gdb 在emacs中,输入可执行文件的名称后,键入M-xgdb,在许多窗口中键入M-xgdb。它提供了一个类似IDE的接口,可以访问调试器、局部变量、源、输入/输出、堆栈帧和断点 您可以找

我很难简单地回忆起给定断点所指的内容。我觉得这很让人分心。我想知道是否有一种方法可以告诉gdb在某个断点周围显示代码

类似这样的代码-
$(gdb)代码3
在断点3周围显示了30行代码。今天可能吗。你能告诉我怎么做吗


我在tui模式下运行gdb,并且我还保持emacs打开以编辑我的源文件。

您可以在emacs中使用gdb

在emacs中,输入可执行文件的名称后,键入
M-xgdb
,在许多窗口中键入
M-xgdb
。它提供了一个类似IDE的接口,可以访问调试器、局部变量、源、输入/输出、堆栈帧和断点


您可以找到一个引用和快照。

我不认为您可以在gdb中这样做,但它可以用gdb python编写脚本

这个粗略的脚本应该有助于:

import gdb

class Listbreak (gdb.Command):
        """ listbreak n Lists code around breakpoint """

        def __init__ (self):
                super(Listbreak, self).__init__ ("listbreak", gdb.COMMAND_DATA)

        def invoke (self, arg, from_tty):
                printed = 0
                for bp in gdb.breakpoints():
                        if bp.number == int(arg[0]):
                                printed = 1
                                print ("Code around breakpoint " + arg[0] + " (" + bp.location + "):")
                                gdb.execute("list " + bp.location)
                if printed == 0:
                        print ("No such breakpoint")
Listbreak()
将其复制到listbreak.py,在gdb(source listbreak.py)中进行源代码转换,然后像这样使用它:

列表中断2