Python Glossary English

Python 3.3+faulthandlerфункция

faulthandler.dump_traceback()

дамп стека

Сразу записывает в файл стек вызовов всех потоков (или только текущего) — без исключения и без остановки программы.

Синтаксис

faulthandler.dump_traceback(file=sys.stderr, all_threads=True)

Пишет прямо в файловый дескриптор, минуя буфер Python: при выводе в sys.stdout строки print() могут оказаться после дампа, поэтому перед вызовом делают sys.stdout.flush(). Формат беднее, чем у traceback: только файл, строка и имя функции, без исходного текста, зато безопасен там, где интерпретатор уже в плохом состоянии. При all_threads=True первая строка содержит идентификатор потока.

Примеры

import faulthandler
def work():
    with open('stack.txt', 'w') as f:
        faulthandler.dump_traceback(file=f, all_threads=False)
work()
text = open('stack.txt').read()
print(text.splitlines()[0])  # → Stack (most recent call first):
print('in work' in text)  # → True
import faulthandler, sys
print('до дампа')
sys.stdout.flush()
faulthandler.dump_traceback(file=sys.stdout, all_threads=False)  # → ? путь к файлу примера

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности