Skip to main content
 首页 » 编程设计

python之以编程方式逐行跟踪 Python 程序/语句的执行

2025年05月04日16Leo_wl

执行 Python 脚本并为每个执行的语句将行号或行本身传递给回调函数的最简单方法是什么?例如

一段待执行的代码

for i in range(5): 
    z = i**2 

和回调

def callback(line): 
   print line 

输出将是:

for i in range(5): 
    z = i**2 
for i in range(5): 
    z = i**2 
for i in range(5): 
    z = i**2 
... 
etc 

另一种说法是,如果我通过调试器运行脚本,我想知道接下来要执行的代码片段。我已经看到了this question about tracing。但我感兴趣的不仅仅是跟踪回调函数中执行的次数。

调试器会有帮助,但前提是我可以在非交互模式下运行它并能够回调 python 代码

请您参考如下方法:

查看sys.settrace功能。这允许您指定为每一行代码执行的跟踪函数。我认为,它是专门为创建 pdb 而实现的,因此它处于您似乎想要的正确抽象级别。实现你想要的东西并非易事,但我认为这是最好的起点。

对于使用它的生产程序,请查看 coverage.py .