Exécuter python pas-à-pas
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 3 janv. 2024 à 15:35
- Le programme à télécharger ci-dessous contient des erreurs et n'est pas complet. corrigez-le et exécutez-le. quel mot de dix lettres est obtenu ?
- Identifiant et mot de passe - Guide
- Télécharger film complet sur mobile - Télécharger - TV & Vidéo
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
2 réponses
2 janv. 2024 à 14:38
Bonjour
au lieu d'un éditeur de texte, utilise un IDE
- vs code oubvs community
- pycharm
- eclipse
- etc
2 janv. 2024 à 16:53
Bonjour,
Tu peux utiliser quelque chose comme pdb.
python3 -m pdb mon_programme.py arg1 arg2
Ainsi, pour exécuter un programme pas à pas :
- Comme pdb est plus sympa, que son homologue gdb (utilisé en C) dont il s'inspire, il définit un breakpoint implicite au début du programme (donc pas besoin de mettre un breakpoint).
- Si le début du programme est trop loin du passage qui t'intéresse (par exemple la fonction foo) tu peux définir breakpoint sur cette fonction avec la commande b foo.
- La commande r (run) lance le programme jusqu'au prochain breakpoint.
Une fois le breakpoint qui t'intéresse atteint, tu peux avancer pas à pas :
- n (next) avance d'une instruction, en restant dans au niveau de la fonction courante
- s (step) avance à l'intérieur d'une fonction, si une fonction est appelée sur la ligne courante.
Point intéressant pour éviter de se faire des crampes dans les doigts, tu es souvent amené à faire plein de "step" ou "next" à la suite. Il faut savoir que pdb (et gdb dont il s'inspire) répète la dernière commande si tu appuies directement sur la touche Entrée. Ainsi si tu fais n entrée, entrée, entrée : cela exécute 3 fois un "next".
Exemple :
toto.py
print("aaa") print("bbb") print("ccc")
python3 -m pdb toto.py
(mando@silk) (~) $ python3 -m pdb toto.py
> /home/mando/toto.py(1)<module>()
-> print("aaa")
(Pdb) n
aaa
> /home/mando/toto.py(2)<module>()
-> print("bbb")
(Pdb)
bbb
> /home/mando/toto.py(3)<module>()
-> print("ccc")
(Pdb)
ccc
--Return--
> /home/mando/toto.py(3)<module>()->None
-> print("ccc")
(Pdb)
--Return--
> <string>(1)<module>()->None
(Pdb) q
(mando@silk) (~) $
Ici je n'ai couvert qu'une utilisation simpliste de pdb, mais c'est un outil assez évolué (comme tout débogueur). Globalement, il est possible de naviguer un peu comme tu veux. Pour plus de détails, tu peux lire ceci.
Un autre point intéressant, c'est que pdb est souvent intégré dans l'interface graphique des IDE python, et son utilisation devient ainsi bien moins laborieuse. Tu peux par exemple regarder du côté de Pycharm. Pour plus de détails, tu peux lire ceci.
Bonne chance
Bonsoir
partant du principe que fran trouve le mode pas à pas de VBA "remarquable" (perso, je dirais que le débuggueur de VBA est le pire que je connaisse, mais les gouts et les couleurs...) , je ne sais pas si lui expliquer le fonctionnement en mode ligne de commande est adapté à la question, surtout si c'est pour finir par
c'est que pdb est souvent intégré dans l'interface graphique des IDE python, et son utilisation devient ainsi bien moins laborieuse.
Ce que je lui ai proposé 2 heures plus tôt, avec des debbugueurs dignes de ce nom.
3 janv. 2024 à 15:35
Tout à fait, mon message avait uniquement pour but de clarifier que ce qu'il cherchait était effectivement un déboguer, et que le "vrai" est en ligne de commande, mais qu'il est intégré dans de nombreux IDE, notamment ceux dont tu parles.