개요
파이썬으로 만든 코드를 디버깅할 때와 실제 배포하여 실행될 때 서로 다른 동작을 시켜야할 경우가 있습니다. 디버깅할 때는 디버깅을 위하여 보다 상세한 정보를 출력한다던지 성능과 관계없이 디버깅을 위한 부분을 더 추가해 주게 되는데, 실제 실행할 때는 불필요한 부분입니다.
이번에는 파이썬 코드가 실행중일 때, 디버깅 중인지 확인하는 방법을 알아 보도록 하겠습니다.
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
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 품질 설정과 함께 이미지를 JPEG로 저장 방법들 (0) | 2024.07.04 |
---|---|
[Python] Flask - Server 헤더 변경하기 (0) | 2024.07.03 |
[python] "v1.v2.v3.v4" 버전 문자열을 숫자들로 변환하기 (0) | 2024.07.02 |
[Python] 현재 시간대에 대한 OFFSET 시간 (UTC) 구하기 (0) | 2024.06.30 |
[python] dict 객체 복사의 세 가지 방법 : 참조 복사, 얕은 복사, 깊은 복사 (0) | 2024.06.26 |