How to force python's VM to print a stack trace?
我正在处理一个用python编写的服务器,它锁定并停止工作,包括日志记录。我想知道是否有一个Python相当于Java的"杀死3"信号,它至少打印当前的StActTrace。
使用FaultHandler模块。https://pypi.python.org/pypi/faulthandler/
1 2 | import faulthandler faulthandler.register(signal.SIGUSR1) |
这在C级的python解释器循环信号处理之外工作,因此即使python解释器本身挂起等待其他东西,它也能工作。
另请参见:http://docs.python.org/dev/library/faulthandler
1 2 3 4 | import signal, traceback def quit_handler(signum,frame): traceback.print_stack() signal.signal(signal.SIGQUIT,quit_handler) |
您可以在这个问题中找到(仅限于UNIX)解决方案。