본문 바로가기
Study Information Technology

Python의 pdb 모듈로 인터랙티브 디버깅하기

by 옆집 김과장 2024. 8. 18.
728x90
반응형

Python의 pdb 모듈로 인터랙티브 디버깅하기

Overview

Python의 pdb 모듈은 코드에서 문제를 진단하고 해결하기 위한 강력한 도구입니다. 이 모듈을 활용하면 코드의 실행을 제어하고, 변수의 상태를 검사하며, 문제를 실시간으로 추적할 수 있습니다. 다음은 pdb의 주요 기능과 사용 방법을 구체적으로 설명합니다.

1. pdb 모듈 기본 사용법

pdb는 Python의 표준 라이브러리에 포함된 디버거입니다. 기본적인 사용 방법은 다음과 같습니다:

  1. 디버거 시작하기
    코드를 디버깅할 위치에 다음과 같이 pdb를 임포트하고, set_trace()를 호출합니다:
import pdb

def example_function():
a = 10
b = 20
pdb.set_trace()  # 디버거가 여기에 멈추게 됩니다
c = a + b
print(c)

example_function()

코드 실행 시 pdbset_trace()가 호출된 위치에서 멈추고, 사용자 입력을 기다립니다.

  1. 디버깅 명령어
    pdb는 여러 명령어를 제공하여 코드 실행을 제어합니다. 주요 명령어는 다음과 같습니다:
  • n (next): 현재 줄의 다음 줄로 이동합니다.
  • c (continue): 다음 중단점까지 실행을 계속합니다.
  • s (step): 현재 줄을 실행하고, 호출된 함수의 첫 줄로 이동합니다.
  • l (list): 현재 실행 중인 코드의 주변 코드를 출력합니다.
  • p (print): 변수의 값을 출력합니다.

예를 들어, 디버거에서 p a를 입력하면 변수 a의 값이 출력됩니다.

2. 디버깅 과정에서 자주 발생하는 오류와 해결 방법

  1. 문법 오류
    코드에 문법 오류가 있으면 pdb가 정상적으로 작동하지 않을 수 있습니다. 예를 들어, 다음과 같은 오류가 발생할 수 있습니다:
File "script.py", line 4
pdb.set_trace(
^
SyntaxError: unexpected EOF while parsing

해결 방법은 문법 오류를 수정하는 것입니다. pdb.set_trace()와 같은 메서드는 반드시 괄호가 올바르게 닫혀야 합니다.

  1. 잘못된 명령어
    pdb에서 지원하지 않는 명령어를 입력하면 다음과 같은 오류가 발생합니다:
(Pdb) xyz
*** Unknown syntax: xyz

해결 방법은 올바른 명령어를 사용하는 것입니다. pdb에서 사용할 수 있는 명령어는 help 명령어를 통해 확인할 수 있습니다.

3. 중단점 설정 및 조건부 중단점

중단점을 사용하면 코드 실행이 특정 지점에서 멈추게 할 수 있습니다. 다음은 중단점을 설정하는 방법입니다:

  1. 기본 중단점
    중단점을 설정하려면, 코드에 pdb.set_trace()를 삽입합니다. 그러나 더 정교한 제어가 필요하다면 breakpoint()를 사용할 수 있습니다.

  2. 조건부 중단점
    특정 조건이 만족될 때만 중단하도록 설정할 수 있습니다. 예를 들어, 특정 변수의 값이 특정 조건을 만족할 때만 중단하도록 설정할 수 있습니다:

import pdb

def example_function(x):
for i in range(10):
if i == 5:
pdb.set_trace()  # 중단점 설정
print(i)

example_function(0)

pdb에서 중단점을 설정한 후 condition 명령어를 사용하여 조건을 추가할 수 있습니다:

(Pdb) condition 1 i == 5

여기서 1은 중단점의 번호입니다. i5일 때만 중단됩니다.

4. 디버깅 세션 종료 및 계속하기

디버깅 세션을 종료하려면 q 명령어를 사용하여 디버거를 종료할 수 있습니다. 디버깅 세션 중 코드 실행을 계속하려면 c 명령어를 사용합니다.

참고문서

728x90
반응형