python -m pdb src.py
or
in the source code, insert
import pdb
pdb.set_trace() % at the trace point
사용법
파이썬 디버거 명령어
pdb에서 가장 널리 사용되는 명령어가 몇 가지 있다.
p/pp: Print expression 일부 표현식의 결과를 프린트한다. 여기서 살펴본 예제를 실행하고 첫 브레이크포인트에서 p x를 입력하면 이 시점의 값인 1이 화면에 나타난다.
c: Continue 사용자가 다른 브레이크포인트를 입력할 때까지 프로그램을 계속 실행한다. c를 입력한 후 다음 브레이크포인트에서 p x를 치면, 또다른 사이클을 돈 후의 x 값이 2가 화면에 나타날 것이다.
s: Step forward 프로그램의 한줄 앞으로 간다. pdb 프롬프트가 실행된 줄 다음에 나타날 것이다.
l: List source 실행 중에 특정 포인트에서 프로그램의 소스코드를 프린트한다. 프린트 포인트 중간에 현재 라인이 나타날 것이다.
w: Print stack trace 특정 순간에서 프로그램의 전체 스택을 보여준다. 이를 이용하면 현재 모듈이 전체 실행 과정 중에서 어디에 있는지를 알 수 있다.
!: Execute statement : 느낌표를 앞에 붙이면 모든 유효한 파이썬 선언을 현재 실행중인 모듈과 함께 실행할 수 있다. 앞선 예제에서 pdb 프롬프트의 경우 x에 100을 설정하려면 !x=100이라고 쓰면 된다. 단, 표현식에서 공백이 없다는 데 주의하자. 파이썬에서 모든 공백은 들여쓰기로 인식된다.
pdb로 조건부 디버깅하기
단지 파이썬 선언 만으로 디버거를 호출할 수 있으므로 조건에 따라 디버거를 팝업으로 사용할 수도 있다. 예를 들어 if/then이나 try/excep 블록을 이용하는 식이다. 이는 특정 조건에서 발생하는 문제를 처리하는 매우 간편한 방법이다.
조건부 디버깅을 하는 다른 방법도 있다. 파이썬 선언 값을 구하는 pdb.run() 명령을 이용하는 것이다. 혹은 파이썬 표현을 연산하는 pdb.runeval() 명령도 있다.
pdb.run('x+=1')
pdb.runeval('x==0')
'Coding > Python Matlab' 카테고리의 다른 글
matlab polar 3D (0) | 2021.07.09 |
---|---|
python dxf, pdf, http server test (0) | 2021.07.09 |
Conda (0) | 2021.03.04 |
simple python graphics module (0) | 2019.09.30 |
파이썬 클래스 matlab structured variable 처럼 사용하기 ??? (0) | 2019.01.26 |