>  기사  >  백엔드 개발  >  Pdb 라이브러리와 일반적으로 사용되는 명령을 사용하여 Python을 디버깅하는 방법

Pdb 라이브러리와 일반적으로 사용되는 명령을 사용하여 Python을 디버깅하는 방법

高洛峰
高洛峰원래의
2017-02-25 11:00:281259검색

Python에는 자체 Pdb 라이브러리가 함께 제공된다는 사실은 누구나 알고 있으며, Pdb를 사용하여 Python 프로그램을 디버깅하는 것이 매우 편리합니다. 하지만 원격 디버깅과 멀티스레딩은 Pdb에서 처리할 수 없습니다. Pdb 라이브러리를 사용하여 Python과 일반적으로 사용되는 명령을 디버깅하는 방법을 살펴보겠습니다.

Pdb를 사용하여 디버깅하는 방법은 여러 가지가 있습니다.

Pdb를 사용하여 Python 프로그램을 디버깅하는 주요 방법은 다음 세 가지입니다. ! 다음은

명령줄과 -m 매개변수

대상 프로그램을 시작하는 명령줄과 -m 매개변수를 하나씩 소개합니다. testPdb.py 호출 시 중단점이 호출되도록 프로그램 실행의 첫 번째 줄 전입니다

이 글에서 다음에 강조할 예제 데모는 이런 식으로 디버깅하는 것입니다!

python -m pdb testPdb.py

Python 대화형 환경에서 디버깅

>>> import pdb
>>> import testPdb
>>> pdb.run('testPdb.test()')

코드에 프로그램 삽입

일반 IDE에서 중단점을 설정한 후 프로그램 중간에 프로그램을 삽입하는 방법을 더 많이 사용합니다. 디버깅을 시작하면 이 메서드는 hardcode

if __name__ == "__main__":
 a = 1
 import pdb
 pdb.set_trace()
 b = 2
 c = a + b
 print(c)

이고 스크립트를 정상적으로 실행합니다. python testPdb.py pdb.set_trace()에 도달하면 해결됩니다. , 그러면 디버깅을 볼 수 있습니다. 프롬프트(Pdb)는

위 작은 프로그램의 디버깅 상황은 다음과 같습니다.

테스트를 준비합니다. 프로그램

다음으로 위에서 소개한 첫 번째 방법을 사용하여 Python 프로그램을 디버깅하여 일반적으로 사용되는 pdb 명령을 소개합니다. 그러나 시작하기 전에 테스트 프로그램 코드를 준비해야 합니다.

testFun.py

메인 모듈에서 호출되는 하위 모듈입니다. 메인 모듈에서 중단점을 추적할 수 있는지 테스트하는 데 사용됩니다. Pdb를 사용하여 디버깅할 때 하위 모듈(지침이 있는 후속 조치)

#!/usr/bin/python
# -*- coding: utf-8 -*-

def add(a, b):
 return a + b

testPdb.py

이것은 아래 디버깅중인 메인모듈 코드입니다

#!/usr/bin/python
# -*- coding: utf-8 -*-

def sub(a, b):
 return a - b

if __name__ == "__main__":

 print ''
 import testFun
 i = 0
 a = 1
 while(i < 100):
  a = testFun.add(a, 1)
  i = i + 1
 print "累加结果:", a
 print ""

 for letter in &#39;Pdb&#39;:
  print "当前字母:", letter
 print ""

 fruits = [&#39;banana&#39;, &#39;apple&#39;, &#39;mango&#39;]
 for fruit in fruits:
  print "当前水果:", fruit
 print ""


 ret = 0
 for num in range(10, 12):
  ret = sub(ret, num)
 print &#39;循环结果:&#39;, ret
 print ""

 d = {&#39;abc&#39;: 123, 123: "abc"}
 for (k,v) in d.items():
  print "当前键值对:", k, &#39;-&#39;, v
 print ""

자주 사용하는 명령어 요약

기본 명령

h(elp) 명령: 현재 버전의 Pdb에서 사용할 수 있는 명령을 인쇄합니다. 명령을 쿼리하려면 다음을 수행합니다. h [command] 입력(예: h l 목록 보기 명령

l(ist) 명령: 현재 실행될 코드 블록을 나열할 수 있습니다

중단점 관리

b(reak): 중단점 설정

예를 들어 b 12는 현재 스크립트의 9번째 줄에 중단점을 추가하는 것입니다

예를 들어 b sub는 현재 스크립트의 하위 함수 정의에 중단점을 추가하려면

현재 스크립트에 중단점을 추가하는 것 외에도 현재 스크립트에서 다른 스크립트에도 중단점을 설정할 수 있습니다. 예를 들어b testFun.add testFun.py 스크립트의 add 함수에 브레이크포인트를 추가하면 됩니다

b만 사용하면 기존 브레이크포인트가 모두 표시됩니다

condition bpnumber [조건]: 조건 2 a==0과 같은 조건부 중단점을 설정합니다. 즉, 두 번째 중단점에 "a==0" 조건을 추가합니다.

cl(ear): 삭제 중단점 뒤에 매개변수가 있으면 지정된 중단점이 지워지고, 매개변수가 없으면 모두 지워집니다. 중단점

비활성화/활성화

프로그램 로직 제어

아래에 표시된 몇 가지 명령이 필요합니다. 해당 스크립트의 코드와 줄 번호를 알고 있으므로 코드의 처음 몇 줄을 보여주는 스크린샷이 있습니다.

c(ont(inue))는 다음 인터럽트가 발생할 때까지 프로그램이 정상적으로 실행될 수 있도록 하기 위해 필요합니다.

n(ext)을 클릭하면 프로그램이 다음 줄을 실행할 수 있습니다. 현재 문에 함수 호출이 있으므로 n을 사용하면 호출된 함수 본문에 들어가지 않습니다.

아래 그림과 같이 testFun.add(a, 1)에 대한 스크립트 중단점을 디버깅할 때 n을 계속 실행하면 함수에 들어가지 않습니다. testFun.add(a, 1) 내부

s(tep)는 n과 유사하지만 현재 함수 호출이 있는 경우 s는 호출된 함수 본문에 들어갑니다

아래 그림과 같이 스크립트 중단점이 testFun.add(a, 1)으로 디버깅되면 s를 계속 실행하면 testFun.add(a, 1)에 해당하는 함수 정의가 입력됩니다. testFun.add이 스크립트에 정의된 함수는 아니지만

j(ump), 이는 프로그램이 지정된 라인 번호로 점프할 수 있게 해줍니다

현재 라인이 10인 경우 참고: j 20이 실행되면 그 후 라인 20으로 직접 점프하는 프로그램과 동일합니다. 중간 라인 11 19번까지는 실제로는 바로 건너뛰어 전혀 실행되지 않습니다. 따라서 이 코드에 변수 선언이나 객체 초기화가 있는 경우 20번 라인 이후부터 실행해야 하는데, 이를 사용하면 오류가 발생할 수 있습니다. 그것은 사용됩니다!

중요 정보 인쇄

a(rgs), 현재 함수의 매개변수를 인쇄합니다. 예를 들어 아래 그림은 testFun.add 내부에 브레이크포인트가 진입한 후 testFun.add의 매개변수

p가 출력되고,

변수가 출력되고, 디버깅을 하는 모습을 보여준다. 종료됨

q, 디버깅을 직접 종료하거나 Ctrl+D를 사용하여 종료합니다.

요약

위에 표시된 Pdb를 사용하여 디버깅하는 과정은 실제로 매우 간단합니다. 기사에서는 주로 스크린샷을 통해 실행 효과를 보여줍니다. 글만 읽어도 전혀 감을 잡을 수 없고, 스크린샷의 명령과 출력이 지저분하다고 느낄 수도 있습니다. 하지만 직접 과정을 따라해 보면 한 시간도 걸리지 않지만 효과는 있을 것입니다. 정말 훌륭해요! 한 가지 더, Python의 디버거는 Linux에서 C 디버거 gdb를 학습하는 데 사용할 수 있는 Pdb입니다. 위 내용은 모든 사람의 학습과 작업에 도움이 되기를 바랍니다.

Pdb 라이브러리를 사용하여 Python을 디버깅하는 방법과 일반적으로 사용되는 명령에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.