본문 바로가기

Study Information Technology

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

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
반응형