Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的setTrace()_Python_Trace - Fatal编程技术网

Python中的setTrace()

Python中的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) 因此,理想情况下,我希望在循环中执行的每

有没有办法在没有方法定义的脚本中使用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)
因此,理想情况下,我希望在循环中执行的每一次迭代/每一行代码上都调用跟踪函数。我以前使用过有方法定义的脚本,但不确定如何在这个实例中使用它。

settrace()实际上只用于实现调试器。如果您使用它来调试这个程序,那么最好使用PDB

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


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

我只使用一个简单的语法行来管理它们:

import pdb; pdb.set_trace()
把它放在任何你想中断执行并开始调试的地方。使用pdb命令(n表示下一步,l表示列表等)

干杯

H