23

traceback.format_exc()

可以通过引发异常来获得它。

traceback.print_stack()

打印堆栈而不需要异常,但它不返回字符串。

似乎没有办法在不引发 python 异常的情况下获取堆栈跟踪字符串?

4

4 回答 4

33

如果traceback.extract_stack()您想要方便地访问模块和函数名称以及行号,或者''.join(traceback.format_stack())您只想要一个看起来像traceback.print_stack()输出的字符串。

于 2013-08-05T01:49:15.640 回答
4

traceback.format_stack 怎么样?

于 2013-08-05T01:51:41.497 回答
2

使用检查模块。特别是检查。currentframe()——但整个模块的存在是为了在给定时间查看程序的状态。

这里有一些有用的检查技巧

于 2013-08-05T01:53:47.143 回答
1

还可以尝试“py-spy”模块,它可以连接到 python 进程并获取瞬时堆栈转储。

于 2018-11-15T01:00:52.443 回答