0Pricing
Python Academy · 강의

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.py

w와 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 frame

ipdb — 향상된 디버거

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. logging 모듈 기초
  2. 핸들러, 포매터 및 필터
  3. 구조화된 로깅
  4. pdb로 디버깅하기
← Python Academy(으)로 돌아가기