Comment puis-je sauter une boucle en utilisant pdb.set_trace()
?
Par exemple,
pdb.set_trace()
for i in range(5):
print(i)
print('Done!')
pdb
invite avant la boucle. J'entre une commande. Toutes les valeurs 1 à 5 sont renvoyées et j'aimerais être invité à pdb
nouveau avant l' print('Done!')
exécution.
n
, puis tapezuntil
. Cela ira jusqu'à ce qu'au moins cette ligne actuelle soit dépassée.f
utilisé par ladebug
fonction de R qui "termine l'exécution de la boucle ou de la fonction courante" ( adv-r.hadley.nz/debugging.html )?until
(ou sa forme courteunt
) sans arguments descendra toujours sur une ligne (sauf si vous appuyez sur une instruction return), vous pouvez donc également l'utiliser plusieurs fois au lieu den
.breakpoint()
set in the loop inpython 3
. LeVB Editor
peut accepter des points d'arrêt «à la volée», mais ce n'est probablement pas le cas avecpdb
.Vous devez définir un point d'arrêt après la boucle ("break main.py:4" en supposant que les lignes ci-dessus sont dans un fichier appelé main.py), puis continuer ("c").
la source
Dans le lien mentionné par la réponse acceptée ( https://pymotw.com/3/pdb/ ), j'ai trouvé cette section un peu plus utile:
Voici un exemple de comment cela peut fonctionner re: loops:
Cela vous évite deux choses: avoir à créer des points d'arrêt supplémentaires et devoir naviguer jusqu'à la fin d'une boucle (surtout lorsque vous avez peut-être déjà itéré de telle sorte que vous ne pourriez pas le faire sans relancer le débogueur).
Voici la documentation Python sur
until
. Btw j'utilisepdb++
comme un drop-in pour le débogueur standard (d'où le formatage) maisuntil
fonctionne de la même manière dans les deux.la source
Vous pouvez définir un autre point d'arrêt après la boucle et y accéder (lors du débogage) avec
c
:la source
Si j'ai bien compris.
Une façon possible de faire ceci serait:
Une fois que vous obtenez une
pdb
invite. Appuyez simplement surn
(suivant) 10 fois pour quitter la boucle.Cependant, je ne connais pas un moyen de sortir d'une boucle
pdb
.Vous pouvez cependant utiliser
r
pour quitter une fonction.la source