Python中的setTrace()
有没有办法在没有方法定义的脚本中使用setTrace()函数?i、 ePython中的setTrace(),python,trace,Python,Trace,有没有办法在没有方法定义的脚本中使用setTrace()函数?i、 e 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) 因此,理想情况下,我希望在循环中执行的每
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)
因此,理想情况下,我希望在循环中执行的每一次迭代/每一行代码上都调用跟踪函数。我以前使用过有方法定义的脚本,但不确定如何在这个实例中使用它。settrace()实际上只用于实现调试器。如果您使用它来调试这个程序,那么最好使用PDB
根据文档,settrace()不会执行您想要的操作
如果您确实想逐行跟踪,请查看编译器包,它允许您访问和修改Python编译器生成的AST抽象语法树。您应该能够使用它来插入对跟踪执行的函数的调用。我只使用一个简单的语法行来管理它们:
import pdb; pdb.set_trace()
把它放在任何你想中断执行并开始调试的地方。使用pdb命令(n表示下一步,l表示列表等)
干杯
H