你将什么插入到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,但没有结果。
(我需要这样做的原因是因为我的程序需要一个小时来读取启动所需的所有数据,并且我需要能够在单个调试会话中尽可能多地进行调试,而不是简单地添加断点并重新启动-运行程序。因此,交互式调用函数并在其中调试它们的灵活性将非常有帮助。)
注意:为了快速解释这一点,我将从 Spyder 工作的角度来讨论这一点。
如果在我的代码中调用 a 函数,我可以在调用它的位置旁边放置一个断点,然后当我的代码到达该点时,我可以单击“Step into function..”按钮来查看该函数内部发生了什么。
假设我处于某个任意断点,并且想要查看不在我的代码中的函数内部发生的情况。有什么方法可以通过 pdb 控制台调用此函数并“步入”所述函数调用吗?