如何强制python的VM打印堆栈跟踪?

时间:2010-01-29 21:14:24

标签: python debugging

我正在处理一个python编写的服务器,它会锁定并停止工作,包括记录。我想知道是否有一个python相当于java的“kill -3”信号,它至少打印出当前的堆栈跟踪。

3 个答案:

答案 0 :(得分:7)

使用 faulthandler 模块。 https://pypi.python.org/pypi/faulthandler/

import faulthandler
faulthandler.register(signal.SIGUSR1)

这在Python的解释器循环的C级信号处理之外工作,所以即使Python解释器本身挂起等待其他东西它也能工作。

另请参阅:http://docs.python.org/dev/library/faulthandler

答案 1 :(得分:2)

import signal, traceback
def quit_handler(signum,frame):
    traceback.print_stack()
signal.signal(signal.SIGQUIT,quit_handler)

答案 2 :(得分:0)

您可以在this question中找到(仅限Unix)解决方案。