Python中的setTrace()
有没有办法在没有方法定义的脚本中使用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)
我希望在循环中每执行一行代码时都能调用trace函数。我之前在有方法定义的脚本中做到过,但这次不太确定怎么做。
2 个回答
2
我只用一行简单的代码来控制一切:
import pdb; pdb.set_trace()
把这行代码放在你想要暂停程序并开始调试的地方。然后可以使用pdb命令(n表示下一步,l表示列出代码等等)。
祝好,
H.
2
settrace() 这个功能其实主要是用来做调试器的。如果你是想用它来调试这个程序,可能用 PDB 会更合适。
根据说明,settrace() 可能无法满足你的需求。
如果你真的想逐行跟踪代码,可以看看编译器包,它可以让你访问和修改 Python 编译器生成的抽象语法树(AST)。你可以利用这个功能插入一个函数调用,用来跟踪代码的执行情况。