[파이썬] PUDB 콘솔 디버거 Develop Tip

파이썬 자체로는 pdb를 가지고 있지만,
gdb 혹은, perl 의 디버거와 같은 훌륭하지 못한 사용자 인터페이스를 가지고 있습니다.

최근에는 거의 이클립스 + PyDev 개발 환경에서 개발하고 있기 때문에,
필요에 따라서는 PyDev의 디버거를 이용하면 되었습니다.

개발 자체는 Ubuntu 의 X11 이클립스 개발 환경이라고 할 지라도,
필요에 따라 Production 시스템에는 이런 GUI 환경이 아니라
파이썬을 디버깅 하기에 수월치 않음을 느낍니다.

과거에도 한두번 찾다가 이제야 제대로 된 콘솔용 디버거를 발견하였습니다.
(아니 제가 제대로 검색을 못했다고 봐야 되겠네요..)

우분투 시스템에 다음과 같이 하면 됩니다.

$ sudo apt-get install python-pudb

그러면 설치가 끝나고 바로 사용할 수 있습니다.

테스트로 간단한 python 스크립트를 작성해 봅니다.

def sum(min, max):
sum = 0
for i in range(min, max+1):
sum += i
return sum

i = 1
j = 2
k = i + j
print k

min = 10
max = 20
print "sum on (%s ~ %s) = %s" % (min, max, sum(min, max))

foo.py라고 저장을 합니다.

디버거를 띄우는 방법은 간단합니다.

python 대신, python -m pudb.run 을 넣어주면 됩니다.

즉,

$ python -m pudb.run foo.py

처음에는 번호를 표시하는가 보기를 어덯게 할 까 등등의 옵션 등이 보여주는 창이 나타나는데, 언제든지 Conrtol+P 키를 눌러
보이게 할 수 있습니다.

또한 "?" 키를 눌러 위와 같은 명령을 볼 수도 있습니다.

가장 많이 사용하는 것은,

b - 현재 줄의 브레이크 포인트 설정/해지
t - 현재 커서 위치 까지 실행
n - 한 스텝씩 실행 (하위 코드로 들어가지 않는다)
s - 한 스텝씩 실행 (하위 코드로 들어간다)
f - 현재 함수를 벗어남
c - 계속 하여 수행함

다섯번 째 라인에서 b 를 눌러 브레이크 포인트를 설정한 다음,
11번째 라인에 와서 t를 누르면 해당 라인까지 수행하고 멈춥니다.
그 당시의 변수, 스택 등의 상태는 오른편에 나타나는데 커서를 이용하여 이동할 수 있습니다.

좀더 복잡한 경우에도 잘 따라 가면서 디버깅을 할 수 있더군요.

프로그램이 종료되면 다시 시작할 지 아니면 pudb를 끝낼지 물어보는 창이 나타납니다.

이제, ssh 등의 원격 접속을 통하여 디버깅을 할 수 있겠군요...

어느 분께는 도움이 되셨기를...

핑백

  • 지훈현서 : [파이썬] winpdb 원격 디버거 사용하기 2013-05-20 14:47:22 #

    ... 지난번 PUDB 콘솔용 파이썬 디버거를 살펴본 적이 있습니다. 필요에 따라 원격 디버깅이 필요한 경우가 있습니다.즉 한 시스템에서 프로그램을 기동시켜 돌려보면서,다른 시스템에서 원격으로 ... more

  • 지훈현서 : [Ubuntu, Docker] MariaDB 10.1 한글 입력이 되지 않을 때 2017-02-03 13:38:36 #

    ... 합니다.- Docker는 하면 할 수록 환경변수에 많이 의존한다는 느낌입니다.- 심지어는 파이썬도 pudb와 같은 터미널 디버거가 필요할 수 있습니다. (해당 블로그 내용 참조)- 작은 컨테이너 이미지를 위하여 alpine 리눅스 기반의 이미지로부터 파생한 경우 busybox 등의 작은 쉘 환경 및 apk 라는 ... more

덧글

  • stania 2012/09/17 14:13 # 삭제 답글

    감사합니다. 기억해두면 많은 도움이 될것 같습니다.
  • 지훈현서아빠 2012/09/17 14:30 #

    도움이 되셨다니 저의 기쁨입니다~ ^^
  • 이준꾸꾸 2017/08/24 23:46 # 삭제 답글

    좋은 디버거 소개 감사합니다!
  • 지훈현서아빠 2017/08/25 08:15 #

    도움이 되셨다니 저의 보람입니다~ ^^
  • 임정섭 2019/04/19 22:56 # 삭제 답글

    sudo 권한이 없는데 https://github.com/inducer/pudb << 여기서 레포 받아서 어떻게 설치하면 될지 혹시 아실까요..?
  • 지훈현서아빠 2019/04/19 23:03 #

    sudo 권한이라고 하시는 것으로 보아, 리눅스나 맥이라 보구요,
    virtualenv 또는 python3 -m venv mypy
    와 같이 버추얼 환경을 만들고,
    pip install pudb
    라는 식으로 설치하시면 됩니다..
    도움이 되셨기를 바랍니다.
  • 주혁 2019/06/29 20:17 # 삭제 답글

    안녕하세요. 게시글 잘 보고 pudb를 깔아서 사용해봤는데 한 스텝 이동할때마다 shell로 갔다가 실행 끝나면 돌아오고 해서 n 누르면서 이동하면 화면이 계속 깜빡거리더라고요.. 혹시 이런 문제 어떻게 해결해서 사용하고 계신지 여쭤봐도 될까요?
  • 지훈현서아빠 2019/06/30 15:09 #

    아마도 TERMCAP 이라는 터미널 에뮬레이션 모드를 확인해 보시면 도움이 되지 않을 까 합니다..
댓글 입력 영역

구글애드텍스트