2014-02-12 31 views
8

Python 3.3包含一個名爲faulthandler的模塊,該模塊在出現段錯誤時顯示有用的追溯信息。 (對於3.3之前的Python版本,模塊可以是obtained from PyPI。)python:使用faulthandler有缺點嗎?

該模塊默認情況下未啓用。它是這樣啓用的:

import faulthandler 
faulthandler.enable() 

該功能非常有用。有什麼特別的原因,它沒有默認啓用?它是否對性能有任何負面影響?

+0

它改變了程序的行爲,即在默認情況下啓用它將是一種向後不兼容的改變,儘管這是一個很好的改變。仍然可能有依賴於當前行爲的程序,並且在使用'faulthandler'時可能會中斷。請注意,如果需要,可以通過命令行選項啓用該模塊。 – Bakuriu

回答

12

此功能非常有用。是否有任何特殊原因,默認情況下不啓用 ?它是否對性能有任何負面影響?

的原因是,faulthandler記住標準錯誤的文件描述符,通常的fd 2.問題是FD 2可能成爲別的東西,像一個插座,管道,重要文件等沒有可靠這種方式來檢測這種情況,因此在Python中默認情況下不啓用faulthandler更安全。

故障處理程序在幾乎所有情況下都是安全的,除了由faulthandler存儲的文件描述符被替換。問題也在文檔中描述: https://docs.python.org/dev/library/faulthandler.html#issue-with-file-descriptors

注:我寫了錯誤處理程序。

相關問題