2012-11-27 64 views
23

我試圖調試模塊「主」,它調用一個函數「broken_function 「位於」another_module「的第356行。我在該函數中有一個錯誤,並希望在其開始處放置一個斷點。以下是列表。難道我做錯了什麼?原因,斷點不起作用:如何設置斷點在另一模塊(不要將其放置在函數定義行,如果你想開始執行功能時打破)

$ python -m pdb main 
(Pdb) import sys 
(Pdb) sys.path.append("/home/user/path/to/another/module") 
(Pdb) import another_module 
(Pdb) b another_module:356 
Breakpoint 1 at /home/user/path/to/another/module/another_module.py:356 
(Pdb) c 
Traceback (most recent call last): 
... 
File "/home/user/path/to/another/module/another_module.py", line 383, in broken_function 
f=open("../jobs/temptree.tre", "r") 
IOError: [Errno 2] No such file or directory: '../jobs/temptree.tre' 
Uncaught exception. Entering post mortem debugging 
... 

回答

13

您正在正確設置斷點。我想它不會停止,因爲你打破的代碼行不被調用。把突破上線383

+0

順便說一句,你也可以嘗試硬斷點,以確保。上線383插入 「進口PDB; pdb.set_trace()」 –

+0

好一點,謝謝!現在就試試。 –

+0

你的建議完美地工作,但pdb的行爲看起來很奇怪。第356行是函數「def broken_function():」的第一行。如果我把斷點的下一行,在那裏居住的評論,PDB說:「***空白或者註釋」,這意味着行的記數不破。該功能內的斷點正常工作。奇怪...感謝您的解決方案! –

相關問題