pdb로 디버깅하기
Python 내장 디버거로 코드를 대화형으로 한 단계씩 실행합니다.
pdb로 디버깅하기은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
pdb란 무엇인가요
pdb는 Python에 내장된 대화형 디버거입니다. 실행을 일시 중지하고, 변수를 확인하며, 코드를 한 줄씩 단계적으로 실행할 수 있습니다.
import pdb
def faulty(n):
result = n * 2
pdb.set_trace() # execution pauses here
return result + 1
faulty(5)breakpoint() — Python 3.7+
breakpoint()는 import pdb; pdb.set_trace()를 간단히 쓴 내장 함수입니다. PYTHONBREAKPOINT 환경 변수를 따릅니다.
def process(data):
for item in data:
if item < 0:
breakpoint() # drop into pdb here
print(item)
process([1, -2, 3])pdb 핵심 명령어
필수 명령어는 다음과 같습니다. n(다음 줄), s(들어가기), c(계속 실행), q(종료), p expr(출력), l(소스 목록).
# Inside pdb prompt:
# (Pdb) n — execute next line
# (Pdb) s — step into function
# (Pdb) c — continue to next breakpoint
# (Pdb) p my_var — print value
# (Pdb) l — show source around current line
# (Pdb) q — quit변수 확인
p로 표현식을 출력하고, pp로 보기 좋게 출력하며, locals()로 모든 지역 변수를 확인할 수 있습니다.
# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
# 'num': 42}
# (Pdb) p locals()조건부 중단점
조건부 중단점을 설정하면 조건이 참일 때만 일시 중지되므로 반복해서 한 단계씩 실행하는 일을 피할 수 있습니다.
import pdb
def process(items):
for i, item in enumerate(items):
if item < 0: # manual condition
pdb.set_trace()
result = item * 2
# Or inside pdb: b filename.py:12, x < 0사후 디버깅
처리되지 않은 예외가 발생한 직후의 상태를 pdb.post_mortem()으로 검사하거나, python -m pdb script.py로 스크립트를 실행하십시오.
import pdb
try:
1 / 0
except ZeroDivisionError:
pdb.post_mortem() # inspect at the crash point
# Or from CLI:
# python -m pdb my_script.pyw와 where로 변수 확인하기
w(where)는 현재 호출 스택의 트레이스백을 출력하므로 현재 프레임에 어떻게 도달했는지 알 수 있습니다.
# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()프레임 간 이동하기
u(up)와 d(down)를 사용하면 호출 스택의 프레임 사이를 이동하면서 호출한 함수의 변수를 검사할 수 있습니다.
# (Pdb) u — move to calling frame
# (Pdb) d — move back down
# (Pdb) p data — inspect variable in that frameipdb — 향상된 디버거
ipdb는 탭 완성, 구문 강조, 매직 명령과 같은 IPython 기능을 pdb에 추가합니다.
# pip install ipdb
import ipdb
def calc(x):
ipdb.set_trace()
return x ** 2
calc(7)pudb — 시각적 터미널 디버거
pudb는 터미널에서 코드, 변수, 스택 패널을 제공하는 전체 화면 TUI 디버거입니다.
# pip install pudb
# python -m pudb my_script.py
import pudb
def run():
pudb.set_trace()
data = [1, 2, 3]
return sum(data)CI에서 중단점 비활성화하기
PYTHONBREAKPOINT=0으로 설정하면 CI 또는 프로덕션 환경에서 모든 breakpoint() 호출이 아무 작업도 하지 않게 됩니다.
# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skipped빠른 확인
다음 중단점까지 실행을 계속하는 pdb 명령은 무엇입니까?
복습
breakpoint()를 사용하여 실행을 일시 중지하고 pdb로 진입하십시오. 핵심 명령은 n, s, c, p, q입니다. 더 풍부한 기능이 필요하다면 ipdb 또는 pudb를 사용해 보십시오. CI에서는 PYTHONBREAKPOINT=0으로 비활성화하십시오.
자주 묻는 질문
“pdb로 디버깅하기” 강의는 무료인가요?
네 — “pdb로 디버깅하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“pdb로 디버깅하기”에서 뭘 배우나요?
Python 내장 디버거로 코드를 대화형으로 한 단계씩 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“pdb로 디버깅하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- logging 모듈 기초
- 핸들러, 포매터 및 필터
- 구조화된 로깅
- pdb로 디버깅하기