Programming

[Python] Python Debugger - pdb 기본 사용법

steloflute 2012. 5. 29. 19:15
http://seorenn.blogspot.com/2011/05/python-python-debugger-pdb.html

 

Eclipse같은 통합 IDE를 사용한다면 다른 이야기겠지만, 그 외의 경우라면 Python코드 디버깅은 쉬운 일은 아니다. 그나마 다행인 점은 pdb 모듈이 있다는 것.

우선 기존의 브레이크포인트 모델을 생각하면 안된다. pdb는 브레이크포인트를 잡기 보다는, 우선 pdb를 실행시켜 trace가 시작되는 시점이 첫 번째 브레이크포인트가 된다.

일단 소스에서 디버깅이 필요한 부분에 다음 코드를 넣어야 한다.

import pdb;pdb.set_trace()

편의상 한 줄로 적었다. 어쨌든 이 코드가 실행되면 프로세스가 실행이 멈추면서 pdb 쉘이 나타난다.

이 쉘에서는 몇 가지 명령어로 디버깅을 수행 할 수 있다.

  • n: 현재 라인 실행(step next)
  • s: 현재 라인의 함수 안으로 이동(step in)
  • run: 현재 지점에서 계속 실행(다음 set_trace가 없으면 디버깅이 끝나는 셈)

이런 식이다. 필요하다면 help를 입력해서 다른 커맨드들을 확인할 수 있다.

pdb를 이용하는게 좀 불편할 지도 모르겠지만, 다른 굉장한 장점이 있다. 바로 pdb 자체가 Python Interpreter 역활도 하기 때문이다.

중간중간 변수의 내용을 확인하려면 print var 이런 식으로 Python 문법을 입력하면 된다. 물론 다른 Python 커맨드도 사용할 수 있다. for 문으로 루프를 돌리면서 뭔가를 처리한다 등의 방법을 디버깅 도중에 사용할 수 있다는 점이다.

... 라고 하지만 딱히 아주 편한건 아니니 -_- ...

단순한 디버깅은 이 정도 만으로도 가능한다. 물론 이 외에 pdb 자체에서 브레이크포인트를 만들거나 할 수도 있으니 자세한 내용은 아래 URL을 방문해 보는 것도 좋겠다.

http://docs.python.org/library/pdb.html

 

'Programming' 카테고리의 다른 글

(Racket) Hash Tables  (0) 2012.05.29
[Python/OpenBook] 예제로 배우는 재미있는 Python  (0) 2012.05.29
Python Mapping Types — dict  (0) 2012.05.29
Python if statements  (0) 2012.05.29
How do I generate random numbers in Python?  (0) 2012.05.29