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.