SeouliteLab

[Python/파이썬] Stack trace 출력하는 방법 (traceback) 본문

프로그래밍

[Python/파이썬] Stack trace 출력하는 방법 (traceback)

Seoulite Lab 2024. 3. 5. 08:19

파이썬에서는 traceback 모듈을 사용하여 스택 트레이스를 출력할 수 있습니다. 스택 트레이스는 예외가 발생한 지점부터 호출 스택의 모든 함수 호출 정보를 포함합니다. 이를 통해 코드에서 발생한 오류를 추적하고 디버깅할 수 있습니다.

1. traceback.print_exc()를 사용하는 방법

가장 일반적인 방법은 traceback 모듈의 print_exc() 함수를 사용하여 예외 정보를 출력하는 것입니다. 이 함수를 호출하면 가장 최근에 발생한 예외에 대한 전체 스택 트레이스가 출력됩니다.

import traceback

try:
    # 오류를 발생시키는 코드
    x = 1 / 0
except:
    traceback.print_exc()

2. traceback.format_exc()를 사용하여 스택 트레이스를 문자열로 반환하는 방법

traceback 모듈의 format_exc() 함수를 사용하여 스택 트레이스를 문자열로 반환할 수도 있습니다. 이 문자열은 후속 처리나 기록을 위해 사용할 수 있습니다.

import traceback

try:
    # 오류를 발생시키는 코드
    x = 1 / 0
except:
    trace_str = traceback.format_exc()
    print(trace_str)

3. traceback.extract_tb()를 사용하여 스택 트레이스 정보를 추출하는 방법

traceback 모듈의 extract_tb() 함수를 사용하면 스택 트레이스에서 각 프레임의 정보를 추출할 수 있습니다. 이를 사용하면 예외가 발생한 위치와 호출된 함수들의 파일 이름, 줄 번호 등을 확인할 수 있습니다.

import traceback

try:
    # 오류를 발생시키는 코드
    x = 1 / 0
except:
    tb = traceback.extract_tb(sys.exc_info()[2])
    for filename, lineno, func, text in tb:
        print(f"File {filename}, line {lineno}, in {func}")
        print(f"  {text}")