2012-11-27 63 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说:“***空白或者注释”,这意味着行的记数不破。该功能内的断点正常工作。奇怪...感谢您的解决方案! –

相关问题