如何以编程方式逐行执行/逐步执行Python代码

时间:2016-12-09 19:59:08

标签: python interpreter pdb

我试图找到一种方法,我可以逐行完成Python代码的程序步骤,并对每行的结果做一些事情。实际上是一个可以通过编程而不是手动控制的调试器。如果pdb在每个步骤之后作为字符串返回它的输出,那么pdb就是我正在寻找的东西,然后我可以再次调用pdb来拾取我离开的地方。但是,它输出到stdout,我必须通过键盘手动输入“step”。

我尝试过的事情:

  1. 我可以重定向pdb的stdout。我可以将它重定向到第二个 Python程序,然后处理它。但是,我不能 弄清楚如何让第二个Python程序告诉pdb 步骤

  2. 与前一个相关,如果我可以让pdb一直步进 直到最后(也许我可以想出一些可以欺骗的东西 键盘重复进入“步骤”?)并将输出重定向到 文件,然后我可以编写另一个像它一样的程序 当它实际上只是阅读时,逐步完成该程序 逐行提交文件。

  3. 我可以使用exec手动运行Python代码行。然而, 因为我会一次看一行,我需要 手动检测和处理条件,循环和 函数调用很快变得非常复杂。

  4. 我阅读了一些帖子,说pdb是使用实现的 sys.settrace。如果没有其他工作,我应该能够重新创建 我需要这样做的行为。

  5. 是否有任何既定/直接的方式来实现我正在寻找的行为?

2 个答案:

答案 0 :(得分:2)

sys.settrace()是逐步完成Python代码的基本构建块。 pdb完全用Python实现,因此您只需查看模块即可了解它是如何工作的。它还有各种公共函数/方法,用于在程序控制下步进,阅读您的Python版本的库参考以获取详细信息。

答案 1 :(得分:1)

  

我读了一些帖子,说pdb是使用sys.settrace实现的。   如果没有其他工作,我应该能够重新创建我需要的行为   用这个。

不要将此视为最后的手段。我认为这是你想要完成的最佳方法。