>  기사  >  백엔드 개발  >  Python 연구 노트 - Python 디버깅

Python 연구 노트 - Python 디버깅

黄舟
黄舟원래의
2017-01-17 14:21:541095검색

우리는 코드를 작성할 때 종종 실수를 많이 합니다. 이것을 어떻게 디버깅합니까?


print 문으로 인쇄

print 문을 사용하여 원하는 내용을 인쇄한 다음 출력에서 ​​볼 수 있습니다.


print "hah"

그러나 디버깅 후에도 여전히 print 문을 수동으로 삭제해야 하는데 이것이 더 번거롭습니다.


assert

이전에 print를 사용했던 곳에서는 대신 Assert 문을 사용할 수 있습니다. 예:

def foo(s):
s = int(s)
assert s != 0, "s is Zero"
return 10.0 / s
foo('0')

assert 문 뒤에는 판단문과 오류 메시지가 옵니다. 판단문이 일치하지 않으면 AssertionError가 발생합니다. 예:

Traceback (most recent call last):
File "/Users/W/Code/Python/Demo/AssertDemo.py", line 7, in 
foo('0')
File "/Users/W/Code/Python/Demo/AssertDemo.py", line 3, in foo
assert s != 0, "s is Zero"
AssertionError: s is Zero

실행 중에 매개변수 -o를 사용하여 Assert를 균일하게 끌 수 있습니다. 닫은 후에는 Assert 문이 더 이상 적용되지 않습니다.


logging

print 문을 로깅으로 대체할 수 있습니다. 로깅은 Assert처럼 오류 메시지를 표시하지 않습니다. 로깅에는 많은 이점이 있습니다. 그 중 하나는 특정 수준의 정보를 출력하도록 사용자 정의할 수 있다는 것입니다.

Level: CRITICAL Numeric value: 50 
Level: ERROR Numeric value: 40
Level: WARNING Numeric value: 30 
Level: INFO Numeric value: 20
Level: DEBUG Numeric value: 10
Level: NOTSET Numeric value: 0

logging.basicConfig(level=logging.DEBUG)

를 사용하여 간단히 로깅을 구성할 수 있습니다. 이 수준보다 작은 경고는 무시됩니다. 또한 콘솔로 출력할지 특정 디버그 파일로 출력할지 등 로깅 출력 위치를 구성할 수도 있습니다. 더 많은 로깅 구성을 보려면 https://segmentfault.com/a/11…을 읽어보세요.


디버거 pdb, Python 디버거

pdb는


python -m pdb test.py
로 시작됩니다.

pdb에서 자주 사용하는 명령어


n : 다음, 다음 단계를 실행하는데 사용
l : 리스트여야 하며, 아래에서 실행할 코드를 확인하세요
p 변수 이름: p는 매개변수의 첫 글자여야 하며, 특정 변수의 값을 확인해야 합니다.
q: 종료, 프로그램 종료

pdb는 단계별 실행을 제어할 수 있습니다. Python의 이론적으로 범용 디버거입니다. 하지만 매우 긴 코드를 처리할 때는 비효율적입니다. 요구 사항을 분석하면서 실제로 이전처럼 각 단계를 보는 대신 실행 결과를 볼 수 있도록 일부 핵심 지점에 중단점을 설정해야 합니다. 다음으로 pdb.set_trace()를 살펴보겠습니다.


pdb.set_trace()

프로그램이 일시 중지된 곳에 코드 한 줄만 작성하면 됩니다. :


pdb.set_trace()

Python 편집기가 pdb.set_trace()를 만나면 프로그램이 일시 중지되고 위에서 언급한 pdb 명령을 사용할 수 있습니다. 각 매개변수의 값을 확인하세요.


물론 Pycharm과 같은 최신 IDE에서는 쉽게 사용할 수 있는 편리한 시각적 디버깅 도구를 많이 제공합니다.

위 내용은 파이썬 스터디 노트-파이썬 디버깅 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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