繁体   English   中英

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

[英]How to programmatically execute/step through Python code line by line

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

我尝试过的事情:

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

  2. 与前一个相关,如果我可以让pdb一直步到最后(也许我可以想出一些东西来欺骗键盘反复输入“step”?)并将输出重定向到一个文件,我可以写当它实际上只是逐行读取文件时,另一个类似于它的程序正在逐步执行程序。

  3. 我可以使用exec手动运行Python代码行。 但是,由于我一次只看一行,我需要手动检测和处理条件,循环和函数调用之类的事情,这些事情很快变得非常复杂。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM