2

我最近遇到了一个非常酷的 Python 模块,叫做pdb。对于那些不熟悉它的人来说,它非常易于使用,并且可以让您访问当时范围内的几乎所有内容。使用它所需要做的就是import pdb将此行放入程序中要设置断点的位置:

pdb.set_trace()

它的工作原理非常类似于gdb,如果它在某种程度上是建立在上面的,我不会感到惊讶。无论如何,我想知道的是:

假设我在第一个断点处停止,评估了一些东西,现在我想完成我的程序。我怎样才能告诉调试器完成程序,而不在任何断点处停止?有一些命令,例如continuestepnext,但这些命令似乎都不能不间断地运行程序的其余部分。任何人都有这方面的经验,还是我要求一些不存在的东西?谢谢!

4

2 回答 2

3

我只想覆盖 pdb.set_trace 函数,删除所有断点并继续

pdb.set_trace = lambda : 0

好消息是您可以在调试器中进行猴子修补。

vikasdhi@redpanda:~$ cat ~/tmp/test.py
for i in range(1000):
    import pdb
    pdb.set_trace()
vikasdhi@redpanda:~$ python ~/tmp/test.py
> /home/vikasdhi/tmp/test.py(1)<module>()
-> for i in range(1000):

它第一次停止

(Pdb) c
> /home/vikasdhi/tmp/test.py(1)<module>()
-> for i in range(1000):
(Pdb) c
> /home/vikasdhi/tmp/test.py(1)<module>()
-> for i in range(1000):

当我想跳过所有内容时,我只需替换该功能

(Pdb) pdb.set_trace = lambda : 0
(Pdb) c
vikasdhi@redpanda:~$ 
于 2013-06-14T20:47:49.727 回答
1

命令是clor clear

cl(ear) [文件名:lineno | bpnumber [bpnumber ...]]

使用 filename:lineno 参数,清除此行的所有断点。使用空格分隔的断点编号列表,清除这些断点。没有争论,清除所有中断(但首先要求确认)。

于 2013-06-14T20:48:46.147 回答