우리는 코드를 작성할 때 종종 실수를 많이 합니다. 이것을 어떻게 디버깅합니까?
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)를 참고해주세요!