파이썬 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.