Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python+;PDB:如何在从PDB中调用的函数中的断点处停止?_Python_Pdb - Fatal编程技术网

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

Python+;PDB:如何在从PDB中调用的函数中的断点处停止?,python,pdb,Python,Pdb,我有一个Python程序,其中有一个函数foo() 我使用PDB运行程序,并在程序中的某个任意断点处停止 现在,我很容易从PDB中调用foo(),我只需键入: !foo() 福跑。一旦它完成,它就会返回到PDB,而我仍然在我的程序之前的原始行等待 但是现在让我们假设我希望PDB在foo中的断点处停止。我在foo()的第一行的源文件中设置了一个断点,然后执行!foo() 但是PDB不会在断点处停止。只有在程序运行时从程序内部调用foo()而不是从PDB的命令行调用foo()时,它才会停止 有人知

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

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

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

!foo()
福跑。一旦它完成,它就会返回到PDB,而我仍然在我的程序之前的原始行等待

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

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

有人知道这件事吗?我已经搜索了PDB文档和Google,但没有结果


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

答案是:PDB有一个“debug”命令,允许您在调试器中对函数调用启动递归调试会话。

如果您知道行号,您可以在会话中设置断点。但是,如果您在多个文件之间切换,我的知识还不足以知道该怎么办……另外,我也不知道PDB是否正确如果你在一个会话的中间运行那个函数,就像你一样,我很聪明,我不知道PDB是否能做到这一点。不管怎样,如果你认为在某个时候你的程序已经准备好调用POWER()了。对于调试,您只需要修改源代码以在该点调用它,调试问题并在修复问题后删除该额外调用。