4

我有一个带有函数 foo() 的 Python 程序。

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

现在,我很容易从 PDB 中调用 foo(),我只需键入:

!foo()

和 foo 运行。一旦它完成,它就会回到 PDB,我仍在等待我的程序之前所在的原始行。

但现在假设我希望 PDBfoo 中的断点处停止。我在 foo() 的第一行在我的源文件中设置了一个断点,然后执行 !foo()。

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

有人知道解决这个问题的任何方法吗?我搜索了 PDB 文档和谷歌无济于事。

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

4

1 回答 1

1

Python 调试器:进入您以交互方式调用的函数会得到答案:PDB 有一个“调试”命令,允许您从调试器内部对函数调用启动递归调试会话。

于 2015-01-14T20:06:59.060 回答