Python 3.3包含一个名为faulthandler的模块,如果发生段错误,该模块将显示有用的回溯信息。 (对于3.3之前的Python版本,模块可以为obtained from PyPI。)

默认情况下未启用该模块。可以这样启用:

import faulthandler
faulthandler.enable()

此功能非常有用。是否有任何特定原因默认不启用它?对性能有负面影响吗?

最佳答案



原因是故障处理程序会记住stderr的文件描述符,通常是fd2。问题是fd 2可能会变成其他东西,例如套接字,管道,重要文件等。没有可靠的方法来检测这种情况,因此,在Python中默认情况下不启用Faulthandler更安全。

在几乎所有情况下,faulthandler都是安全的,除非替换了faulthandler存储的文件描述符。问题也在文档中描述:
https://docs.python.org/dev/library/faulthandler.html#issue-with-file-descriptors

注意:我写了faulthandler。

关于python - python:使用Faulthandler有不利之处吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21733856/

10-10 19:43