我有一个带有函数foo()的Python程序。
我使用PDB运行程序,并在程序中的某个位置停止任意断点。
现在,我很容易从PDB中调用foo(),我只需输入:
!foo()
foo跑了。一旦完成,它就会回到PDB,我仍然在等待我之前的程序所在的原始行。
但是现在让我们说我希望PDB在 foo中的处停止。我在foo()的第一行的源文件中设置了一个断点,然后执行!foo()。
但PDB不会在断点处停止。如果从程序中调用foo(),而不是在程序运行时从PDB的命令行调用它,它似乎只会停在那里。
有人知道这方面有什么办法吗?我搜索了PDB文档和Google无济于事。
(我需要这样做的原因是因为我的程序需要一个小时来读取所有必要的数据才能启动,我需要能够在一个调试会话中尽可能多地进行调试,而不是简单地添加断点并重新运行程序。因此,交互式调用函数以及在其中调试函数的灵活性将非常有用。)
答案 0 :(得分:1)
Python debugger: Stepping into a function that you have called interactively有答案:PDB有一个'调试'允许您在调试器内的函数调用上启动递归调试会话的命令。