44

我正在尝试调试一个模块“main”,该模块在“another_module”的第 356 行调用了一个函数“broken_function”。我在那个函数中有一个错误,想在它的开始处放置一个断点。下面是列表。难道我做错了什么?原因,断点不起作用:

$ 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
...
4

2 回答 2

26

您正在正确设置断点。我想它不会停止,因为您正在中断的代码行没有被调用。将中断放在第 383 行。

于 2012-11-27T17:58:38.917 回答
13

您还可以直接使用文件和行号设置断点,而无需导入sysanother_module

(Pdb) b /home/user/path/to/another/module/another_module.py:383
Breakpoint 1 at /home/user/path/to/another/module/another_module.py:383

请注意/home/user/path/to/another/module/another_module.py,正如其他人指出的那样,需要导入并且第 383 行需要可执行并且在执行路径中才能中断。

如需更多帮助,请键入help b(或就此而言,help后跟任何其他命令)以获取有关该命令的更多信息。

于 2019-10-10T18:37:04.213 回答