我的类的实例变量之一正在发生某些事情。我想使变量成为一个属性,并且每当访问该变量时,我都希望打印出导致该点的所有代码的堆栈跟踪,因此我可以看到它的混乱之处。没有引发异常时,如何打印堆栈跟踪?我知道是否有例外,我可以做类似的事情traceback.format_tb(sys.exc_info()[2])
。
同样有用的是仅打印最后3-4个级别,因为前几个级别可能不会那么有趣。
Answers:
>>> def f():
... def g():
... traceback.print_stack()
... g()
...
>>> f()
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in f
File "<stdin>", line 3, in g
编辑:您还可以使用extract_stack,获取一个切片(例如stack[5:]
,排除前5个级别),并使用format_list获得可打印的stacktrace('\n'.join(traceback.format_list(...))
)
full_stack()
功能!