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

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

Feb 25, 2017 am 11:00 AM

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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

See all articles