打印Python堆栈跟踪没有例外被提出

我的一个类的实例variables发生了一些事情。 我想让variables成为一个属性,每当它被访问的时候,我想打印出所有代码的堆栈跟踪,所以我可以看到它被混淆了。 当没有exception提出时,如何打印出堆栈跟踪? 我知道是否有例外,我可以做一些像traceback.format_tb(sys.exc_info()[2])

另外可能有用的是只打印最后的3-4个级别,因为前几个可能不会那么有趣。

traceback.print_stack()

 >>> 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(...))