Python中的setTrace()

Leo*_*das 6 python trace

有没有办法在没有方法定义的脚本中使用setTrace()函数?即

for i in range(1, 100):
    print i

def traceit(frame, event, arg):
    if event == "line":
        lineno = frame.f_lineno
        print "line", lineno

return traceit

sys.settrace(traceit)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望在循环中执行的每个迭代/代码行调用跟踪函数.我之前使用过具有方法定义的脚本,但是我不知道如何让它在这个实例中工作.

Mic*_*lon 2

settrace() 实际上仅用于实现调试器。如果您使用它来调试该程序,那么使用 PDB 可能会更好

根据文档,settrace() 不会执行您想要的操作。

如果您确实想逐行跟踪,请查看编译器包,它允许您访问和修改 Python 编译器生成的 AST 抽象语法树。您应该能够使用它来插入对跟踪执行的函数的调用。