PHpullh

PYTHON · 예외처리

traceback 분석

traceback 모듈로 예외의 스택 트레이스를 프로그래밍적으로 분석하고 포맷합니다.

예외처리고급traceback스택 트레이스디버깅예외

핵심 설명

traceback 모듈로 예외의 스택 트레이스를 프로그래밍적으로 분석하고 포맷합니다.

Python code

import traceback
import sys

def function_c():
    raise RuntimeError("깊은 곳에서 발생한 에러")

def function_b():
    function_c()

def function_a():
    function_b()

# 스택 트레이스 캡처
try:
    function_a()
except RuntimeError:
    # 문자열로 포맷
    tb_str = traceback.format_exc()
    print("=== 전체 트레이스 ===")
    print(tb_str[:300])

    # 프로그래밍적 분석
    tb = traceback.extract_tb(sys.exc_info()[2])
    print("=== 프레임 분석 ===")
    for frame in tb:
        print(f"  {frame.filename}:{frame.lineno} in {frame.name}")
        print(f"    코드: {frame.line}")

# 경량 트레이스 (로깅용)
def format_short_trace(e: Exception) -> str:
    tb = traceback.extract_tb(e.__traceback__)
    last = tb[-1]
    return f"{type(e).__name__}: {e} at {last.name}:{last.lineno}"

try:
    function_a()
except RuntimeError as e:
    print(f"요약: {format_short_trace(e)}")

학습 팁

traceback.extract_tb()로 각 프레임의 파일명, 줄번호, 함수명, 코드를 구조적으로 접근할 수 있습니다.

주의할 점

traceback 정보를 로그에 포함할 때 민감한 변수 값이 노출되지 않도록 주의하세요.

자주 묻는 질문

traceback 분석란 무엇인가요?

traceback 모듈로 예외의 스택 트레이스를 프로그래밍적으로 분석하고 포맷합니다.

traceback 분석 학습 시 주의할 점은 무엇인가요?

traceback 정보를 로그에 포함할 때 민감한 변수 값이 노출되지 않도록 주의하세요.