파이썬 pdb-루프 건너 뛰기


88

을 사용하여 루프를 건너 뛰려면 어떻게 pdb.set_trace()해야합니까?

예를 들면

pdb.set_trace()
for i in range(5):
     print(i)

print('Done!')

pdb루프 전에 프롬프트합니다. 명령을 입력했습니다. 모든 1-5 값이 반환되고 실행 pdb되기 전에 다시 메시지를 받고 싶습니다 print('Done!').

답변:


137

until진술을 시도하십시오 .

루프의 마지막 줄 ( next또는 사용 n)로 이동 한 다음 until또는 을 사용 unt합니다. 루프 바로 뒤의 다음 줄로 이동합니다.

http://www.doughellmann.com/PyMOTW/pdb/ 에 좋은 설명이 있습니다.


기사에서 :를 사용하여 for 루프의 마지막 줄로 이동 n한 다음을 입력 until합니다. 이것은 적어도 현재 라인이 초과 될 때까지 진행됩니다.
sachinruk

목록 이해도 함께 작동합니다. 마지막 줄은 신경 쓰지 않아도됩니다.
시바

루프의 마지막 줄로 이동하는 것이 번거 롭다면 어떻게 하시겠습니까? 실제로 "현재 루프 또는 함수의 실행을 완료" f하는 R의 debug함수 ( adv-r.hadley.nz/debugging.html ) 에서 사용하는 것과 동일한 것이 없습니까?
Qaswed

사용 until(또는 약식 unt당신은 또한 단지 대신 그것을 시간의 무리를 사용할 수 있도록 (return 문에 충돌하지 않는 한) 항상 줄 아래로 이동합니다 인수없이) n.
Boris

breakpoint()에서 루프의 세트에서는 작동하지 않습니다 python 3. 는 VB Editor'즉시'중단 점을 수락 할 수 있지만 pdb.
Timo

4

루프 뒤에 중단 점을 설정하고 (위의 줄이 main.py라는 파일에 있다고 가정하면 "break main.py:4") 계속 ( "c")해야합니다.


2

허용 된 답변 ( https://pymotw.com/3/pdb/ )에서 언급 한 링크 에서이 섹션이 다소 도움이된다는 것을 알았습니다.

특정 행까지 실행되도록하려면 행 번호를 until 명령에 전달하십시오.

다음은 re : 루프가 작동하는 방법의 예입니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

추가 중단 점을 생성해야하고 루프의 끝으로 이동해야하는 두 가지 작업에서 벗어날 수 있습니다 (특히 디버거를 다시 실행하지 않고는 할 수 없을 정도로 이미 반복했을 때).

.NET에 대한 Python 문서는 다음과 같습니다 until. Btw pdb++표준 디버거 (따라서 형식화)의 드롭 인으로 사용 하고 있지만 until둘 다에서 동일하게 작동합니다.


0

루프 뒤에 다른 중단 점을 설정하고 다음을 사용하여 (디버깅 할 때) 점프 할 수 있습니다 c.

pdb.set_trace()
for i in range(5):
    print(i)

pdb.set_trace()
print('Done!')

-17

내가 이것을 올바르게 이해했다면.

이를 수행하는 한 가지 가능한 방법은 다음과 같습니다.

당신이 당신을 얻으면 pdb 프롬프트를 . 그냥 히트 n루프를 종료 (다음) 10 회.

그러나 나는 루프를 종료하는 방법을 모릅니다. pdb .

r그래도 기능을 종료하는 데 사용할 수 있습니다 .


5
루프가 10000000이면 어떻게 될까요? 당신의 대답은 매우 분명합니다.
hecvd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.