Breakpoint
중단점
디버거가 실행을 멈추는 지점. 변수 상태 확인, 단계별 실행에 사용.
중단점
디버거가 실행을 멈추는 지점. 변수 상태 확인, 단계별 실행에 사용.
Breakpoint(중단점)는 디버깅 과정에서 프로그램 실행을 특정 지점에서 일시 중단시키는 마커입니다. 개발자는 중단점이 설정된 코드 라인에 도달하면 프로그램이 멈추고, 그 시점의 변수 값, 콜 스택, 메모리 상태 등을 상세히 검사할 수 있습니다.
조건부 브레이크포인트(Conditional Breakpoint)는 특정 조건이 참일 때만 실행을 중단하는 고급 기능입니다. 예를 들어 "i > 100일 때만 중단"처럼 설정하면 수백 번의 반복 중 문제가 발생하는 특정 시점만 정확히 잡아낼 수 있어 디버깅 효율이 크게 향상됩니다.
현대 IDE와 디버거는 다양한 종류의 브레이크포인트를 지원합니다. 라인 브레이크포인트(특정 줄에서 중단), 함수 브레이크포인트(함수 진입 시 중단), 예외 브레이크포인트(예외 발생 시 중단), 데이터 브레이크포인트(변수 값 변경 시 중단) 등이 있습니다. 이러한 다양한 중단점을 적절히 활용하면 복잡한 버그도 효과적으로 추적할 수 있습니다.
브레이크포인트는 print 문을 사용한 디버깅보다 훨씬 강력합니다. 코드 수정 없이 실행 흐름을 관찰하고, 중단 시점에서 표현식을 평가하며, 스텝 오버/스텝 인/스텝 아웃으로 코드를 한 줄씩 추적할 수 있기 때문입니다. 프로덕션 환경에서는 브레이크포인트 대신 로깅을 사용하지만, 개발 중에는 가장 효율적인 디버깅 도구입니다.
# Python pdb (Python Debugger) 사용 예제
import pdb
def calculate_average(numbers):
"""평균 계산 함수 - 디버깅 데모"""
total = 0
count = 0
for num in numbers:
# pdb.set_trace()를 사용한 수동 브레이크포인트
# 이 지점에서 실행이 멈추고 디버거 프롬프트가 나타남
pdb.set_trace() # 여기서 중단됨
total += num
count += 1
print(f"현재 합계: {total}, 개수: {count}")
return total / count if count > 0 else 0
# 조건부 브레이크포인트 시뮬레이션
def debug_loop_with_condition(data):
for i, item in enumerate(data):
# 조건부 중단: i가 5일 때만 디버거 진입
if i == 5:
pdb.set_trace() # 조건부 브레이크포인트
process(item)
# breakpoint() - Python 3.7+ 내장 함수 (권장)
def modern_debugging():
x = 10
y = 20
breakpoint() # Python 3.7+ 표준 브레이크포인트
# 디버거에서 사용 가능한 명령어:
# n (next): 다음 줄로 이동
# s (step): 함수 안으로 진입
# c (continue): 다음 브레이크포인트까지 실행
# p 변수명: 변수 값 출력
# l (list): 현재 코드 주변 표시
# q (quit): 디버거 종료
result = x + y
return result
# 실행 예시
if __name__ == "__main__":
numbers = [1, 2, 3, 4, 5]
avg = calculate_average(numbers)
print(f"평균: {avg}")
"이 버그 재현이 어려워서 조건부 브레이크포인트를 걸어봤어요. user_id가 특정 값일 때만 중단되게 설정했더니 문제 원인을 바로 찾을 수 있었습니다."
"디버깅할 때 주로 IDE의 브레이크포인트를 활용합니다. 라인 브레이크포인트로 실행을 멈추고, Watch 창에서 변수 상태를 확인하며, 스텝 오버와 스텝 인으로 코드 흐름을 추적합니다. 반복문에서는 조건부 브레이크포인트로 특정 조건만 캐치합니다."
"여기 pdb.set_trace() 코드가 남아있네요. 디버깅용 브레이크포인트는 커밋 전에 꼭 제거해주세요. pre-commit hook에 pdb 검사를 추가하면 실수로 푸시되는 걸 방지할 수 있어요."
pdb.set_trace(), debugger, breakpoint() 같은 디버깅 코드는 반드시 커밋 전에 제거하세요. 프로덕션에서 실행되면 서비스가 중단되거나 보안 문제가 발생할 수 있습니다.
브레이크포인트를 과도하게 설정하면 디버깅이 오히려 비효율적입니다. 문제가 의심되는 핵심 지점 2-3곳에만 설정하고, 조건부 브레이크포인트를 활용하세요.
F5(실행), F9(브레이크포인트 토글), F10(스텝 오버), F11(스텝 인) 등 디버거 단축키를 익히면 디버깅 속도가 크게 향상됩니다. 각 IDE마다 단축키가 다르니 사용하는 도구의 키맵을 숙지하세요.