2011-12-02 193 views
2

我有一个函数foo()在它的Python程序。Python + PDB:如何停止从PDB内调用的函数的断点?

我使用PDB运行程序,并停止在程序内某个任意断点处。现在

,很容易让我打电话从内部PDB FOO(),我只需要输入:

!foo() 

和Foo运行。一旦完成,它就会回到PDB,而我仍然在等待我的程序在之前的原始线路。

但现在,让我们说,我想给PDB富内停止在断点处。我在foo()的第一行的源文件中设置了一个断点,然后执行!foo()。

但PDB不停在断点处。如果在程序中调用foo(),而不是在程序运行时从PDB的命令行中调用foo(),它似乎只能停在那里。

有没有人知道任何方式?我搜索了PDB文档和Google无济于事。

(我需要这样做的原因是因为我的程序需要一个小时来读取所有必要的数据来启动,而且我需要能够在单个调试会话中尽可能多地进行调试,而不是简单地添加断点并重新运行程序,因此交互调用函数的灵活性以及在其内部进行调试将非常有帮助。)

+0

如果您知道亚麻布,您可以在会话中设置断点。如果你在多个文件之间进行操作,我的知识还不够丰富,另外,我不知道PDB是否足够聪明地尊重那些断点,如果你在中间运行该功能像你这样的会议是 –

+0

我不确定PDB是否可以做到这一点。无论如何,如果您认为在某个时候您的程序已准备好调用foo()进行调试,那么您只需修改源代码以在此时调用它,调试问题并在修复问题后删除该额外的调用问题。 – jcollado

回答