대화 형 디버깅 (python -m pdb foo.py
)과 하드 코드 된 중단 점 (import pdb; pdb.set_trace()
) 간의 차이점은 무엇입니까? dubuggers에Python 디버거 : 대화 형 디버깅 대 하드 코드 된 중단 점
대부분의 튜토리얼은 특정 명령의 사용에 Focuse입니다,하지만 이해하는 흥미로운 일이 될 것이다 :
디버깅 모드를 선택하는 가장 좋은 방법은 무엇입니까?
계산 시간면에서 다른 성능이입니까?
대화 형 디버깅 (python -m pdb foo.py
)과 하드 코드 된 중단 점 (import pdb; pdb.set_trace()
) 간의 차이점은 무엇입니까? dubuggers에Python 디버거 : 대화 형 디버깅 대 하드 코드 된 중단 점
대부분의 튜토리얼은 특정 명령의 사용에 Focuse입니다,하지만 이해하는 흥미로운 일이 될 것이다 :
디버깅 모드를 선택하는 가장 좋은 방법은 무엇입니까?
계산 시간면에서 다른 성능이입니까?
python -m pdb foo.py
프로그램 시작 부분에 디버거가 나타납니다. 이것은 전체적으로 분석하고자하는 아주 작은 프로그램에서 유용 할 수 있습니다.
더 크고 복잡한 프로그램에서 키가 큰 함수 호출 스택의 맨 위에서 중요한 계산을 수행 한 후에 조사하려는 상황이 발생하는 경우 이러한 종류의 사용법은 매우 실용적이지 않습니다.
그런 경우 흥미로운 상황이 발생하는 소스 코드의 지점에서 하드 브레이크 포인트를 import pdb; pdb.set_trace()
으로 설정하는 것이 일반적으로 더 쉽습니다. 그런 다음 프로그램을 정상적으로 실행합니다. 정상적으로 실행됩니다. 사용자의 개입없이 많은 계산을 수행하는 데 상당한 시간이 걸릴 수 있습니다. 관심 지점에 도달했을 때만 디버거가 사용자에게 개입 할 것을 요구합니다.
성능 측면 : 첫 번째 경우에는 모든 진술을 순서대로 진행해야합니다. 둘째, 디버거는 사용자가 관심 지점에 도달 할 때까지 호출되지 않습니다.
CPU가 인간의 반응을 기다리는 거의 모든 시간을 보낸다. 두 번째에서는 관심 지점에 도달 할 때까지 프로그램 실행에 대부분의 시간을 보낸다.
'첫 번째 경우에는 순서대로 각 문장을 단계별로 실행해야합니다.'는 의미는 무엇입니까? 키가 큰 함수 호출 스택이 있으면 pdb가 매우 느려졌습니다. 왜 그런가요? @jacg 감사합니다! –