2011-12-02 42 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

回答