Python Glossary English

Python 3.3+Linux · macOSfaulthandlerфункция

faulthandler.register()

дамп по сигналу

Назначает сигналу (например, SIGUSR1) вывод стека всех потоков — заглянуть в работающую программу снаружи. Linux и macOS.

Синтаксис

faulthandler.register(signum, file=sys.stderr, all_threads=True, chain=False)

На Windows функции нет. Типичный приём: register(signal.SIGUSR1) при старте, а когда сервис «подвис» — kill -USR1 <pid> из терминала, и стек появится в stderr, а программа продолжит работу. Сигналы аварий (SIGSEGV, SIGABRT…) так назначить нельзя — RuntimeError с советом использовать enable(). chain=True вызывает и прежний обработчик сигнала.

Примеры

import faulthandler, signal
with open('sig.txt', 'w') as f:
    faulthandler.register(signal.SIGUSR1, file=f, all_threads=False)
    signal.raise_signal(signal.SIGUSR1)
    faulthandler.unregister(signal.SIGUSR1)
print(open('sig.txt').read().splitlines()[0])  # → Stack (most recent call first):
import faulthandler, signal
try:
    faulthandler.register(signal.SIGSEGV)
except RuntimeError as e:
    print(e)  # → signal 11 cannot be registered, use enable() instead

См. также

Частые ошибки

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