我正在尝试找到一种方法,可以让程序逐行遍历Python代码,并对每行的结果进行处理。这实际上是一个可以通过编程控制而不是手动方式操作的调试器。如果pdb在每个步骤后返回其输出作为字符串并且我可以再次调用pdb来继续之前的调试进度,那么它将会是我所需要的。但是,它将输出到stdout并且我必须通过键盘手动输入"step"。
我尝试过以下几种方法:
我尝试过以下几种方法:
- 我能够重定向pdb的stdout。我可以将其重定向到第二个Python程序中,然后再进行处理。但是,我无法弄清楚如何让第二个Python程序告诉pdb进行单步操作。
- 如果我能够让pdb一直执行到最后(也许我可以想出一些欺骗性的方式,反复模拟键盘输入"step"?),并将输出重定向到文件,然后我就可以编写另一个程序,在其读取文件的每一行时,就好像在逐行地遍历程序一样。
- 我可以使用exec手动运行Python代码的每一行。然而,由于我只能查看一行,因此我需要手动检测和处理条件语句、循环和函数调用等内容,这会很快变得非常复杂。
- 我阅读了一些帖子,说pdb是使用sys.settrace实现的。如果没有其他方法,我应该能够使用它来重新创建我需要的行为。