打印python堆栈跟踪而无异常
我的类的实例变量之一正在发生某些事情。我想将变量设置为属性,并且每当访问该变量时,我都希望打印出导致该点的所有代码的堆栈跟踪,因此我可以看到它的混乱之处。没有异常发生时如何打印堆栈跟踪?我知道是否有例外,我可以做类似的事情traceback.format_tb(sys.exc_info()[2])
。
同样有用的是仅打印最后3-4个级别,因为前几个级别可能不会那么有趣。
-
>>> 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(...))
)