В разделе рассмотрены различные способы выгрузки трассировки стека обработчика ошибок при отладке приложения при помощи модуля faulthandler.
faulthandler.dump_traceback(file=sys.stderr, all_threads=True):Функция faulthandler.dump_traceback() выгрузит трассировку всех потоков в файл file. Если аргумент all_threads имеет значение False, то функция выгрузит только текущий поток.
Изменено в Python 3.5: Добавлена поддержка передачи дескриптора файла в эту функцию.
faulthandler.dump_traceback_later(timeout, repeat=False, file=sys.stderr, exit=False):Функция faulthandler.dump_traceback_later() выгрузит трассировку всех потоков по истечении тайм-аута timeout в секундах или через каждый тайм-аут timeout, если аргумент repeat имеет значение True.
Если аргумент exit имеет значение True, вызовет _exit() со статусом status=1 после сброса трассировки. Обратите внимание, что _exit() немедленно завершает процесс, это означает, что не будет выполнятся никакой очистки, такой как очистка файловых буферов.
Если функция вызывается дважды, то новый вызов заменяет предыдущие параметры и сбрасывает время ожидания. Таймер имеет разрешение менее секунды.
Аргумент file должен оставаться открытым, пока не будет сброшен дамп трассировки или пока не будет вызвана faulthandler.cancel_dump_traceback_later(), иначе может возникнуть проблема с файловыми дескрипторами.
faulthandler.cancel_dump_traceback_later():Функция faulthandler.cancel_dump_traceback_later() отменяет последний вызов функции faulthandler.dump_traceback_later().
faulthandler.register(signum, file=sys.stderr, all_threads=True, chain=False):Функция faulthandler.register() регистрирует пользовательский сигнал: устанавливает обработчик сигнала signum, чтобы вывести в файл file трассировку всех потоков или текущего потока, если аргумент all_threads имеет значение False. Вызывает предыдущий обработчик, если аргумент chain имеет значение True.
Файл file должен оставаться открытым до тех пор, пока сигнал не будет отменен функцией faulthandler.unregister(), иначе может возникнуть проблема с файловыми дескрипторами.
Недоступно в Windows.
Изменено в версии 3.5: Добавлена поддержка передачи дескриптора файла.
faulthandler.unregister(signum):Функция faulthandler.unregister() отменяет регистрацию сигнала пользователя: удаляет обработчик сигнала signum, установленный с помощью функции faulthandler.register().
Возвращает True, если сигнал был зарегистрирован, иначе False.
Недоступно в Windows.