traceback.format_exc() 可以通过引发异常来获取它。 traceback.print_stack() 打印堆栈时不需要异常,但它不会返回字符串。 似乎在Python中没有方法可以在不引发异常的情况下获取堆栈跟踪字符串?
如果您想要方便地访问模块、函数名称和行号,可以使用traceback.extract_stack();如果只是想要看起来像traceback.print_stack()输出的字符串,则可以使用''.join(traceback.format_stack())。
''.join
,由于format_stack()
的元素包含\n
,您仍将获得多行字符串。 - Thomas Ahleformat_stack
得到的堆栈跟踪有很多我不感兴趣的层,而且通常调试器永远不会选择它们。在 Flask 应用程序中,对于我来说,format_exception
噪声较少,并且看起来更接近于我的运行输出中的正常堆栈转储:https://dev59.com/tlIG5IYBdhLWcg3wyEhG - phyatt