파이썬 자체가 세그폴트(segmentation fault)로 죽거나 무한 루프에 빠지면 보통 traceback도 못 남기고 종료됩니다.
faulthandler 모듈이 이런 「치명적 오류」를 추적할 수 있게 해 줍니다.
기본 사용.
import faulthandler.
faulthandler.enable() — 활성화.
이후 세그폴트가 나면 traceback이 stderr에 자동 출력.
C 확장 모듈(numpy·tensorflow 등) 사용 시 매우 유용.
환경변수로 자동.
PYTHONFAULTHANDLER=1 환경변수 설정으로 모든 파이썬 실행에 자동 활성화.
운영 환경에서는 항상 켜 두는 편이 좋음.
타임아웃·시그널로 덤프.
faulthandler.dump_traceback_later(30) — 30초 후 모든 스레드의 traceback 덤프(무한 루프 진단).
시그널 핸들러 등록도 가능 — 외부 시그널로 「현재 상태 출력」.
한계.
파이썬 코드 자체의 버그(예: 무한 재귀)는 traceback이 잘 나옴.
faulthandler는 C 확장의 메모리 오류·외부 시그널·멈춤 같은 「파이썬이 못 잡는」 영역을 보완하는 용도.
한 줄 요약
faulthandler는 세그폴트·멈춤 같은 치명적 오류의 traceback을 출력합니다.
C 확장 사용·운영 환경에서 PYTHONFAULTHANDLER=1로 항상 켜 두는 게 좋습니다.
더 알아볼 것
- py-spy — 외부에서 traceback 추출
- gdb로 파이썬 디버깅
- C 확장 디버깅 일반