如何强制Python虚拟机打印堆栈跟踪?
我正在处理一个用Python写的服务器,它会卡住,停止工作,连日志都不记录了。我想知道,Python有没有类似于Java的“kill -3”信号,至少可以打印出当前的堆栈跟踪信息。
3 个回答
0
你可以在这个问题中找到一个只适用于Unix系统的解决方案。
2
在编程中,有时候我们需要处理一些数据,这些数据可能是从不同的地方获取的,比如用户输入、文件读取或者网络请求。为了让程序能够理解这些数据,我们通常需要将它们转换成一种特定的格式。
比如说,如果你从一个表单获取了用户的输入,这些输入可能是字符串(也就是文本),但在程序中你可能需要将它们转换成数字,才能进行计算。这就像把一个苹果变成一个橙子,虽然它们都是水果,但你需要用不同的方式来处理它们。
在这个过程中,我们会用到一些工具和方法来帮助我们完成转换。比如,编程语言通常会提供一些函数,让我们可以轻松地把一种类型的数据转换成另一种类型。这样,我们就能更方便地操作和使用这些数据了。
总之,数据转换是编程中一个很重要的环节,它能帮助我们让程序更聪明,能够理解和处理各种不同类型的信息。
import signal, traceback
def quit_handler(signum,frame):
traceback.print_stack()
signal.signal(signal.SIGQUIT,quit_handler)
7
使用faulthandler模块。你可以在这里找到它:https://pypi.python.org/pypi/faulthandler/
import faulthandler
faulthandler.register(signal.SIGUSR1)
这个模块在C语言层面工作,不受Python解释器循环的信号处理影响,所以即使Python解释器因为其他原因卡住了,它也能正常工作。