我试图找到一种方法,我可以逐行完成Python代码的程序步骤,并对每行的结果做一些事情。实际上是一个可以通过编程而不是手动控制的调试器。如果pdb在每个步骤之后作为字符串返回它的输出,那么pdb就是我正在寻找的东西,然后我可以再次调用pdb来拾取我离开的地方。但是,它输出到stdout,我必须通过键盘手动输入“step”。
我尝试过的事情:
我可以重定向pdb的stdout。我可以将它重定向到第二个 Python程序,然后处理它。但是,我不能 弄清楚如何让第二个Python程序告诉pdb 步骤
与前一个相关,如果我可以让pdb一直步进 直到最后(也许我可以想出一些可以欺骗的东西 键盘重复进入“步骤”?)并将输出重定向到 文件,然后我可以编写另一个像它一样的程序 当它实际上只是阅读时,逐步完成该程序 逐行提交文件。
我可以使用exec手动运行Python代码行。然而, 因为我会一次看一行,我需要 手动检测和处理条件,循环和 函数调用很快变得非常复杂。
我阅读了一些帖子,说pdb是使用实现的 sys.settrace。如果没有其他工作,我应该能够重新创建 我需要这样做的行为。
是否有任何既定/直接的方式来实现我正在寻找的行为?
答案 0 :(得分:2)
sys.settrace()
是逐步完成Python代码的基本构建块。 pdb完全用Python实现,因此您只需查看模块即可了解它是如何工作的。它还有各种公共函数/方法,用于在程序控制下步进,阅读您的Python版本的库参考以获取详细信息。
答案 1 :(得分:1)
我读了一些帖子,说pdb是使用sys.settrace实现的。 如果没有其他工作,我应该能够重新创建我需要的行为 用这个。
不要将此视为最后的手段。我认为这是你想要完成的最佳方法。