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

Debugging 如何在DDD调试器(pydb模式)中一次禁用所有断点,debugging,gdb,breakpoints,ddd-debugger,Debugging,Gdb,Breakpoints,Ddd Debugger,使用gdb,我们可以禁用断点,如上所述。在文档中,要取消所有断点,只需给出disalbe,而不提供断点列表。但在我的ddd(数据显示调试程序)中,它不起作用。我怎么做?或者如何指定范围?(我试了1-10次,但没有成功) 编辑:我使用命令DDD-pydb prog.py arg1 arg2..使用DDD进行python调试,所以它实际上是pydb命令,而不是gdb命令。请参阅注释以获得答案,我后来发现,对于pydb,不带任何参数的命令delete会删除所有断点。要禁用所有断点,您必须修改gdb.p

使用gdb,我们可以禁用断点,如上所述。在文档中,要取消所有断点,只需给出
disalbe
,而不提供断点列表。但在我的ddd(数据显示调试程序)中,它不起作用。我怎么做?或者如何指定范围?(我试了1-10次,但没有成功)


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

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

*** 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

我看到
禁用123456789
是有效的。它对我有效(DDD3.3.12,GDB7.7.1)。您正在运行哪个版本?GNU DDD 3.3.12(x86_64-redhat-linux-GNU)和GNU gdb(gdb)Red Hat Enterprise linux(7.2-83.el6)。可能是GDB版本的差异?我会看看是否有这些版本。如果您再次键入
info b
,然后键入
disable
,然后键入
info b
,输出中是否有任何差异?在
Enb
列中,甚至没有一个断点具有
n
?噢。你不是在使用gdb,而是在使用pydb。pydb的命令集是受gdb的启发而来的,但它们不一样。但是pydb很容易修改,因为它附带了所有用python编写的源代码。在
gdb.py
中查找
do\u disable
,并将
self.errmsg('未给出断点编号')
更改为类似于bdb.breakpoint.bpbynumber:bp.disable()。谢谢,我现在正在方便地使用它:)