Programing

pdb를 종료하고 프로그램을 계속하는 방법은 무엇입니까?

lottogame 2020. 9. 11. 19:24
반응형

pdb를 종료하고 프로그램을 계속하는 방법은 무엇입니까?


프로그램을 디버깅하기 위해 pdb 모듈을 사용하고 있습니다. pdb를 종료하고 프로그램이 계속해서 완료되도록 허용하는 방법을 알고 싶습니다. 이 프로그램은 실행하는 데 계산 비용이 많이 들기 때문에 스크립트를 완료하지 않고 종료하고 싶지 않습니다. continue작동하지 않는 것 같습니다. pdb를 종료하고 내 프로그램을 계속하려면 어떻게해야합니까?


continue"실행을 계속하고 중단 점이 발생할 때만 중지"해야합니다. 따라서 중단 점이 어딘가에 설정되어 있습니다. 중단 점을 제거하려면 (수동으로 삽입 한 경우) :

(Pdb) break
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at /path/to/test.py:5
(Pdb) clear 1
Deleted breakpoint 1
(Pdb) continue

또는을 사용 pdb.set_trace()하고 있다면 이것을 시도해 볼 수 있습니다 (pdb를 더 멋진 방법으로 사용하고 있다면 이것은 일을 망칠 수 있습니다 ...)

(Pdb) pdb.set_trace = lambda: None  # This replaces the set_trace() function!
(Pdb) continue
# No more breaks!

간단한이 Ctrl- DPDB의 탈옥 것입니다. 중단하지 않고 계속 c하려면 전체 continue명령 대신 누르십시오.


@voithos 대답 은 정확하므로 .NET을 사용하는 경우 하나의 대안 만 추가하겠습니다 set_trace. 예, pdb.set_trace = lambda: None해킹은 정상적으로 작동하지만 다른 중단 점이 설정되어 있고 나중에 다시 활성화하려는 경우에는 작동하지 않습니다. 나에게 이것은 불행하게도 pdb많은 기능 (디스플레이 목록과 같은 기본적인 것조차도)이 없다는 사실을 가리키며 , 이것은 또 다른 경우입니다.

좋은 소식은을 (를 pdb++) 대체 할 수있는 훌륭한 pdb방법이며이 기능이 해결하는 것 중 하나는 정확히을 (를) 비활성화하는 문제입니다 set_trace. 따라서 간단하게 다음을 수행 할 수 있습니다.

pip install pdbpp

그런 다음 (Pdb++)프롬프트 에서 다음을 입력합니다.

pdb.disable()

나중에 다시 활성화하려면 당연히 다음과 같이 작동합니다.

pdb.enable()

쉬운! 그리고 그 위에 다른 많은 유용한 혜택을 얻을 수 있습니다.


정말로 디버거를 종료하려면 WinPdb 와 같은 것을 실행 하여 프로세스에서 분리 한 다음 디버거를 종료해야합니다 (NB는 다중 플랫폼입니다).

디버깅을 계속하고 싶지만 더 이상 주어진 중단 점에서 중지하지 않으려면 다음을 수행해야합니다.

  1. 중단 점 번호 (또는 파일 및 줄 번호)를 기록해 둡니다.
  2. 하나 cl bp_number 또는 clear file:line 영구적으로 중단 점을 제거하기 위해 또는 disable pb_number 그것을 떨어져 전환하지만 다시 전환 할 수 있도록.
  3. 그런 다음 continue프로그램이 다음 다른 중단 점에 도달 할 때까지 실행 됩니다.

위의 자세한 내용 은 설명서를 참조하십시오 .

참고 URL : https://stackoverflow.com/questions/17820618/how-to-exit-pdb-and-allow-program-to-continue

반응형