Python 3.3+faulthandlerфункция
faulthandler.enable()
обработчик сбоев
Включает вывод трассировки Python при аварийном падении процесса: segfault, SIGABRT, SIGFPE и т. п.
Синтаксис
faulthandler.enable(file=sys.stderr, all_threads=True, c_stack=True)
Ловит то, чего не видит try/except: падение внутри C-расширения, где обычной трассировки нет вовсе. file должен иметь настоящий файловый дескриптор — с io.StringIO() будет UnsupportedOperation — и оставаться открытым, пока обработчик включён. Включить без правки кода можно ключом -X faulthandler или переменной PYTHONFAULTHANDLER, а режим -X dev включает его сам.
Примеры
import faulthandler, io
try:
faulthandler.enable(file=io.StringIO())
except io.UnsupportedOperation as e:
print(e) # → fileno
with open('crash.log', 'w') as log:
faulthandler.enable(file=log)
print(faulthandler.is_enabled()) # → True
faulthandler.disable()
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности