Python+PDB:如何在从PDB中调用的函数中的断点处停止?

cra*_*ngo 5 python pdb

我有一个Python程序,其中有一个函数foo()。

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

现在,我可以轻松地从 PDB 中调用 foo(),我只需键入:

!foo()
Run Code Online (Sandbox Code Playgroud)

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

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

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

有人知道解决这个问题的方法吗?我搜索了 PDB 文档和 Google,但没有结果。

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

小智 3

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