python pdb - döngüyü atla


88

Kullanarak bir döngüyü nasıl atlayabilirim pdb.set_trace()?

Örneğin,

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

print('Done!')

pdbdöngüden önce sorar. Bir komut giriyorum. Tüm 1-5 değerleri döndürülür ve ardından yürütmeden pdbönce tekrar sorulmasını istiyorum print('Done!').

Yanıtlar:


137

İfadeyi dene until.

Döngünün son satırına gidin ( nextveya ile n) ve ardından untilveya kullanın unt. Bu sizi döngüden hemen sonra bir sonraki satıra götürecektir.

http://www.doughellmann.com/PyMOTW/pdb/ iyi bir açıklamaya sahip


Makaleden: kullanarak for döngüsünün son satırına gidin nve ardından yazın until. Bu, en azından mevcut satır aşılana kadar devam edecektir.
— sachinruk

Liste anlayışlarıyla da çalışır. Son satırı umursamana gerek yok.
— Shiva

Döngünün son satırına gitmek zahmetli olsaydı ne yapardın? "Geçerli döngünün veya işlevin yürütülmesini bitiren" ( adv-r.hadley.nz/debugging.html ) fR'nin debugişlevinin kullanımına gerçekten eşdeğer bir şey yok mu?
— 2019

Bağımsız değişkenler olmadan until(veya kısa biçimini unt) kullanmak her zaman bir satır aşağıya inecektir (bir return ifadesine ulaşmadığınız sürece), bu nedenle bunu yerine birkaç kez de kullanabilirsiniz n.
— Boris

breakpoint()Döngüdeki set ile çalışmaz python 3. VB Editor'Sinek' kesme noktaları kabul edebilir, ancak bu büyük olasılıkla durum böyle değildir pdb.
— Timo

4

Döngüden sonra bir kesme noktası belirlemelisiniz (yukarıdaki satırların main.py adlı bir dosyada olduğunu varsayarak "break main.py:4") ve sonra devam etmelisiniz ("c").


2

Kabul edilen cevapta belirtilen bağlantıda ( https://pymotw.com/3/pdb/ ), bu bölümü biraz daha yararlı buldum:

Yürütmenin belirli bir satıra kadar çalışmasına izin vermek için satır numarasını until komutuna iletin.

İşte bunun nasıl çalışabileceğine dair bir örnek: re: döngüleri:

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin

Sizi iki şeyden kurtarır: ekstra kesme noktaları oluşturmak zorunda kalmak ve bir döngünün sonuna gitmek zorunda kalmak (özellikle hata ayıklayıcıyı yeniden çalıştırmadan yapamayacağınız şekilde zaten yinelemişseniz).

İşte Python belgeleri until. Btw pdb++Standart hata ayıklayıcı (dolayısıyla biçimlendirme) için bir açılır pencere olarak kullanıyorum , ancak untilher ikisinde de aynı şekilde çalışıyor.


0

Döngüden sonra başka bir kesme noktası ayarlayabilir ve şunlarla (hata ayıklarken) ona atlayabilirsiniz c:

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

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

-17

Bunu doğru anladıysam.

Bunu yapmanın olası bir yolu şudur:

pdbİstemi aldığınızda . Döngüden nçıkmak için 10 kez (sonraki) tuşuna basın.

Ancak, bir döngüden çıkmanın bir yolunu bilmiyorum pdb.

rYine de bir işlevden çıkmak için kullanabilirsiniz .


5
Ya döngü 10000000 ise? Cevabınız çok açık.
— hecvd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.