【发布时间】:2017-04-25 09:02:18
【问题描述】:
我正在尝试找到一种方法,可以让程序逐行遍历 Python 代码,并对每一行的结果做一些事情。实际上是一个可以通过编程而不是手动控制的调试器。如果 pdb 在每一步之后将其输出作为字符串返回,那么 pdb 将正是我正在寻找的内容,然后我可以再次调用 pdb 以从我离开的地方拾取。但是,它输出到标准输出,我必须通过键盘手动输入“步骤”。
我尝试过的事情:
我能够重定向 pdb 的标准输出。我可以将其重定向到第二个 然后将处理它的 Python 程序。然而,我不能 弄清楚如何让第二个 Python 程序告诉 pdb 步骤。
和上一个有关,如果我能让pdb一路步进 一直到最后(也许我可以想出一些东西来欺骗 键盘反复输入“步骤”?)并将输出重定向到 文件,然后我可以编写另一个程序,就像它一样 当程序实际上只是在阅读 逐行归档。
我可以使用 exec 手动运行 Python 代码行。然而, 因为我一次只看一条线,所以我需要 手动检测和处理条件、循环和 函数调用很快就会变得非常复杂。
我读过一些帖子说 pdb 是使用 sys.settrace。如果没有其他工作,我应该能够重新创建 我需要使用它的行为。
是否有任何既定/直接的方式来实现我正在寻找的行为?
【问题讨论】:
-
下面你说你成功了。您是否欺骗了标准输入以单步执行,或者您是否找到了一种方法来调用诸如 pdb.do_step() 之类的东西?您能否详细介绍一下您的解决方案?
标签: python interpreter pdb