如何在 DDD 调试器(pydb 模式)中一次禁用所有断点

how to disable all breakpoints at once in DDD debugger (pydb mode)

使用 gdb,我们可以禁用断点,如 ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_32.html 中所述。在文档中,要取消所有断点,它只给出 disalbe 而没有断点列表。但是在我的 ddd(data-display-debuger) 中,它不起作用。我该怎么做?或者如何指定范围? (我尝试了 1-10 但没有成功)。

编辑:我使用 DDD python 使用命令 ddd -pydb prog.py arg1 arg2.. 进行调试,所以它实际上是 pydb 命令,而不是 gdb 命令。答案看评论,后来发现对于pydb,不带任何参数的命令delete会删除所有的断点。要禁用所有断点,您必须修改 gdb.py 并查看下面的注释。

pydb支持的命令与gdb类似,但不尽相同。目前,如果没有给出参数,pydb 的 disable 命令会给出错误。您可以编辑 pydb 的源代码(它可能在许多系统的 /usr/share/pyshared/pydb/ 中找到)并更改 do_disable(在 gdb.py 中),这样如果没有给 disable args ,它将禁用所有断点:

*** gdb.py.orig 2009-11-17 17:00:21.000000000 -0800
--- gdb.py  2016-08-20 17:12:09.561338798 -0700
***************
*** 1067,1069 ****
          if len(args) == 0:
!             self.errmsg('No breakpoint number given.')
              return
--- 1067,1071 ----
          if len(args) == 0:
!             for bp in bdb.Breakpoint.bpbynumber:
!                 if bp:
!                     bp.disable()
              return