如何告诉Python调试器完成程序?

时间:2013-06-14 20:43:32

标签: python debugging pdb

我最近遇到了一个名为pdb的非常酷的Python模块。对于那些不熟悉它的人来说,它非常易于使用,并且可以让您在当时的范围内访问任何内容。要使用它,只需import pdb并将此行放在要设置断点的程序中:

pdb.set_trace()

它非常像gdb,如果它在某种程度上建立在顶部,我不会感到惊讶。无论如何,我想知道的是:

说我已经停在我的第一个断点,评估了一些事情,现在我想完成我的程序。如何告诉调试器完成程序,不再停止任何断点?有一些命令,例如continuestepnext,但这些命令似乎都不会中断运行程序的其余部分。任何人都有这方面的经验,或者我要求的东西不存在?谢谢!

2 个答案:

答案 0 :(得分: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:~$ 

答案 1 :(得分:1)

命令为clclear

  

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

     

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