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
또사용중경우인는경우▁you▁or'▁using,re.pdb.set_trace()
당신은 이것을 시도할 수 있습니다. (비록 당신이 PDB를 좀 더 화려한 방법으로 사용한다면, 이것은 상황을 망칠 수도 있습니다...)
(Pdb) pdb.set_trace = lambda: None # This replaces the set_trace() function!
(Pdb) continue
# No more breaks!
단순한 -D pdb에서 벗어날 것입니다.끊기는 대신 계속하려면 전체를 누르기보다는 그냥 누릅니다.continue
@voitos의 답변이 맞으므로, 당신이 사용하는 경우에 한 가지 대안을 추가하겠습니다.set_trace
네, 그pdb.set_trace = lambda: None
hack은 정상적으로 작동하지만 다른 중단점이 설정되어 있고 나중에 다시 활성화하려는 경우에는 작동하지 않습니다.나에게 이것은 불행하게도pdb
기능(표시 목록과 같은 기본적인 항목도 포함하지 않음)이 있으며, 이는 또 다른 경우입니다.
좋은 소식은 그것이 훌륭한 대체품이라는 것입니다.pdb
그리고 그것이 해결하는 것 중 하나는 정확히 장애인 문제입니다.set_trace
따라서 다음과 같은 작업을 간편하게 수행할 수 있습니다.
pip install pdbpp
그다에음에서.(Pdb++)
프롬프트, 입력:
pdb.disable()
나중에 다시 활성화하려는 경우 당연히 이 기능이 작동합니다.
pdb.enable()
쉬워요! 그리고 여러분은 그 위에 많은 다른 유용한 음식들을 얻을 것입니다.
디버거를 종료하려면 프로세스에서 분리한 다음 디버거(N.B. 멀티 플랫폼)를 종료할 수 있는 WinPdb와 같은 것을 실행해야 합니다.
디버깅을 계속하되 지정된 중단점에서 더 이상 중지하지 않으려면 다음 작업을 수행해야 합니다.
- 중단점 번호(또는 파일 및 줄 번호)를 기록합니다.
- 중 하나.
cl bp_number
또는clear file:line
중단점을 영구적으로 제거하거나disable pb_number
끌 수 있지만 다시 끌 수 있습니다. - 그리고나서
continue
그리고 당신의 프로그램은 다음 다른 중단점이 발생할 때까지 실행됩니다.
위의 내용에 대한 자세한 내용은 설명서를 참조하십시오.
사용한 경우breakpoint()
코드에서 환경 변수별로 모든 중단점을 비활성화할 수 있습니다.
import os
os.environ['PYTHONBREAKPOINT'] = '0'
이것은 (Pdb) 대화형 상태일 때도 작동하며, 이것은 모두 비활성화합니다.breakpoint()
코드에 삽입되지만 (Pdb)에 의해 활성화되지 않은 중단점.
자, 이것을 테스트해 봅시다, 코드는.breakpoint()
4행:
> /tmp/py.py(5)<module>()
-> print(x,a)
(Pdb) ll
1
2 for x in "abcdefg":
3 a=1
4 breakpoint()
5 -> print(x,a)
6 b=2
7 print(x,b)
6행에 새로운 중단점을 설정합니다.
(Pdb) break 6
Breakpoint 1 at /tmp/py.py:6
(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep yes at /tmp/py.py:6
이제 모두 사용 안 함breakpoint()
이 경우는 4행입니다.
(Pdb) import os
(Pdb) os.environ['PYTHONBREAKPOINT'] = '0'
그리고 계속.
(Pdb) c
a 1
> /tmp/py.py(6)<module>()
-> b=2
(Pdb) ll
1
2 for x in "abcdefg":
3 a=1
4 breakpoint()
5 print(x,a)
6 B-> b=2
7 print(x,b)
이제 그것은 6호선에서 멈추고 4호선을 건너뜁니다, 계속합시다.
(Pdb) c
a 2
b 1
> /tmp/py.py(6)<module>()
-> b=2
이제 그것은 6호선에서 다시 멈추고 4호선을 건너뜁니다.
(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep yes at /tmp/py.py:6
(Pdb) clear 1
Deleted breakpoint 1 at /tmp/py.py:6
이제 (Pdb) 라인 6의 중단점이 삭제되고 프로그램이 계속 작동할 수 있습니다.
(Pdb) c
b 2
c 1
c 2
d 1
d 2
e 1
e 2
f 1
f 2
g 1
g 2
- 히트를 치다
c
-> 계속하려면(프로그램 추가) - 히트를 치다
q
-> 종료(디버거와 프로그램도 종료)
아무것도 설치하지 않고 pdb를 종료하는 새로운 방법 찾기: - 프로그램이 실행되기 시작하면 ctrl+c를 누른 다음 창을 다른 창으로 전환합니다. 그러면 pdb가 실행 중인 원래 셸에 다음과 같은 내용이 표시됩니다. (pdb) ..... - 다시 pdb로 전환한 다음 Enter 키를 누르면 이제 모두 설정됨, pdb 명령 셸이 다시 나타납니다.
중단점을 비활성화합니다.pdb에서 disable N을 입력합니다. 여기서 N은 고정된 중단점 번호입니다.문제가 되는 중단점의 번호를 모를 경우 tbreak을 입력합니다.여기에는 "Num" 열에 숫자별로 중단점이 나열되고 "Enb" 열에 중단점이 활성화 또는 비활성화되었는지 여부가 표시됩니다.
문제가 되는 중단점을 해제한 후 continue 명령(또는 약어 c)을 실행하면 프로그램이 완료됩니다.
쉘에 는 PDB, PDB, PDB를 프로듀싱하고 있었습니다.^M
그래서 피할 수가 없었어요.
과학적으로 조작된 실험을 한 결과ctrl+Z
( pdb는 haught입니다. ( )stty sane
Enter 키를 수정합니다.)
그런 다음 pdb 셸을 죽이거나 다시 시작해야 합니다.실행하려면 실행jobs
그렇다면 어느 쪽이든fg 1
또는kill %1
(작업 번호 배포).
다른 사람들을 위해, 그리고 내가 다음 주에 여기에 돌아오면 내 자신을 위해 그것을 여기에 기록할 것이라고 생각했습니다.
언급URL : https://stackoverflow.com/questions/17820618/how-to-exit-pdb-and-allow-program-to-continue
'programing' 카테고리의 다른 글
MongoDB의 모든 아이들을 어떻게 얻을 수 있습니까? (0) | 2023.07.15 |
---|---|
중첩된 객체 배열 정렬 (0) | 2023.07.15 |
git update-index --discovery-discovery가 "파일을 표시할 수 없음"을 반환합니다. (0) | 2023.07.15 |
고급 사용자 지정 필드 / 다른 acf 필드를 기준으로 채우기 선택 (0) | 2023.07.15 |
vuetify 데이터 테이블 및 json 개체에서 가져온 바인딩 데이터 (0) | 2023.07.15 |