프로그래밍/Python

[python] 코드가 실행중일 때, 디버깅 중인지 확인하는 방법

채윤아빠 2024. 7. 5. 10:02

개요

파이썬으로 만든 코드를 디버깅할 때와 실제 배포하여 실행될 때 서로 다른 동작을 시켜야할 경우가 있습니다. 디버깅할 때는 디버깅을 위하여 보다 상세한 정보를 출력한다던지 성능과 관계없이 디버깅을 위한 부분을 더 추가해 주게 되는데, 실제 실행할 때는 불필요한 부분입니다.

이번에는 파이썬 코드가 실행중일 때, 디버깅 중인지 확인하는 방법을 알아 보도록 하겠습니다.


sys.gettrace()

from sys import gettrace

def is_debugging():
    return (gettrace() != None)

DEBUGPY_RUNNING 환경변수

from os import getenv

def is_debugging():
    return bool(getenv('DEBUGPY_RUNNING'))

pdb 디버거 관련 변수

def is_debugging():
    from sys import modules as sys_modules
    debugger_names = ['pdb', 'ipdb', 'PyDev', 'pydevd']
    return any(name in sys_modules for name in debugger_names)

마무리

가장 신뢰할 수 있는 방법은 sys.gettrace() 함수를 이용하는 것입니다. 이 함수는 디버거가 실행 중일 때 None이 아닌 값을 반환합니다. 디버거가 실행중이 아닐 때는 None을 반환합니다.

그러나 IDE 환경이나 디버거의 종류에 따라 이러한 방법들이 올바로 동작하지 않을 수 있다는 점을 유의하고 이용해야만 합니다. (실제 환경에서의 시험은 필수!)



728x90
반응형