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

5 投票
1 回答
3037 浏览
提问于 2025-04-17 07:33

我有一个Python程序,里面有一个叫foo()的函数。

我用PDB(Python调试器)运行这个程序,并在程序的某个地方设置了一个任意的断点。

现在,我可以很简单地在PDB中调用foo(),只需要输入:

!foo()

然后foo就会运行。等它运行完后,我又回到了PDB,依然停在我之前程序的那一行。

但如果我想让PDB在foo内部的某个断点停下来呢?我在源文件的foo()第一行设置了一个断点,然后执行!foo()。

可是PDB并没有在那个断点停下。它似乎只在程序内部调用foo()时才会停在那里,而不是在程序运行时从PDB的命令行调用。

有没有人知道怎么解决这个问题?我查了PDB的文档和Google,但都没找到答案。

我需要这样做的原因是因为我的程序启动时需要一个小时来读取所有必要的数据,我希望在一次调试会话中尽可能多地进行调试,而不是简单地添加断点然后重新运行程序。所以能够灵活地交互调用函数,并在其中进行调试,对我来说非常有帮助。

1 个回答

3

Python调试器:进入你在交互式环境中调用的函数提供了答案:PDB有一个“debug”命令,可以让你在调试器中对函数调用进行递归调试。

撰写回答