웹사이트 검색

파이썬 중단점()


Python breakpoint()는 Python 3.7에 도입된 새로운 내장 함수입니다. Python 코드 디버깅은 실제 코드와 디버깅 모듈 코드 간의 긴밀한 결합으로 인해 항상 고통스러운 프로세스였습니다. 예를 들어 pdb 디버거를 사용하는 경우 프로그램 코드에서 pdb.set_trace()를 호출해야 합니다. 다른 디버거를 사용하려면 web-pdb라고 하면 PDB와 관련된 모든 코드를 제거하고 web_pdb.set_trace() 메서드를 추가해야 합니다. 이로 인해 Python 디버거를 사용하는 데 엄청난 오버헤드가 발생하고 Python 코드를 디버깅하고 유지하기 어렵게 만듭니다. 이것이 Python 3.7에서 느슨하게 결합된 디버깅 코드를 작성할 수 있는 breakpoint() 메서드를 도입한 이유입니다.

파이썬 중단점()

Python breakpoint() 함수는 sys.breakpointhook() 함수를 호출합니다. 기본적으로 sys.breakpointhook()는 pdb.set_trace() 함수를 호출합니다. 따라서 적어도 breakpoint()를 사용하면 pdb 모듈을 명시적으로 가져올 필요가 없기 때문에 디버거를 사용하는 데 편리합니다. breakpoint() 함수 사용의 간단한 예를 살펴보겠습니다. 다음 코드가 포함된 Python 스크립트 python_breakpoint_examples.py가 있습니다.

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

이 스크립트를 실행하면 PDB 디버거 콘솔이 열립니다.

$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$

Python breakpoint() - 디버깅 중지

Python sys.breakpointhook() 함수는 환경 변수 PYTHONBREAKPOINT를 사용하여 디버거를 구성합니다. 설정하지 않으면 기본 PDB 디버거가 사용됩니다. "0\으로 설정하면 함수가 즉시 반환되고 코드 디버깅이 수행되지 않습니다. 디버깅 없이 코드를 실행하려는 경우 매우 유용합니다.

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

Python breakpoint() - 디버거 모듈 변경

PYTHONBREAKPOINT 환경 변수를 사용하여 breakpoint() 함수에 의해 호출되는 디버거 메서드를 제공할 수 있습니다. 이것은 코드를 변경하지 않고도 디버거 모듈을 쉽게 변경할 수 있기 때문에 매우 유용합니다. web-pdb 디버거를 사용하고 싶다고 가정해 보겠습니다. PYTHONBREAKPOINT=web_pdb.set_trace를 사용하여 프로그램에 쉽게 연결할 수 있습니다. 먼저 web-pdb가 설치되어 있는지 확인합니다. pip3.7 install web-pdb 명령을 사용하여 설치할 수 있습니다.

web-pdb 문서에 따르면 Python 3.7에 추가된 새로운 breakpoint() 함수와 호환됩니다.

$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...

요약

Python breakpoint() 함수는 Python 디버깅 기능에 매우 유용한 추가 기능입니다. 다른 타사 디버거를 즉석에서 쉽게 연결할 수 있도록 디버깅에 사용하는 것이 좋습니다. 또한 디버거를 비활성화하고 프로그램을 정상적으로 실행하는 쉬운 옵션을 제공합니다.

GitHub 리포지토리에서 더 많은 Python 예제를 확인할 수 있습니다.

참조: 공식 문서