{{tag>Brouillon}} = Python - Debug Voir : * https://realpython.com/python-debugging-pdb/ * https://www.geeksforgeeks.org/python-debugger-python-pdb/ * https://www.digitalocean.com/community/tutorials/how-to-use-the-python-debugger * https://itnext.io/debugging-your-code-in-python-pdb-vs-rpdb-e7bb918a8ac3 * https://www.geekarea.fr/wordpress/?p=763 == pdb Voir https://docs.python.org/fr/3/library/pdb.html Insérer import pdb; pdb.set_trace() Ou lancer le programme en mode debug sans modifier le code python2 -m pdb /usr/local/bin/plop.py === Syntax **b** pour Breakpoint \\ Ajout un point d'arrêt ou liste les points d'arrêt **l** ou **ll** \\ Affiche une portion du code **cl(ear)** \\ Clear breakpoint **p** ou **pp** \\ Affiche la valeur d'une variable **!** statement \\ Executer du code Python. Dans bien des cas le **!** pourra être omis **s(tep)** \\ Exécute la ligne en cours, s'arrête à la première occasion possible (soit dans une fonction qui est appelée, soit sur la ligne suivante de la fonction courante). **n(ext)** \\ La différence entre next et step est que step s'arrête dans une fonction appelée, tandis que next exécute les fonctions appelées à (presque) pleine vitesse **restart** \\ Redémarrer le programe Python débugé. **quit** \\ === Exemple (Pdb) b plop:49 Breakpoint 1 at /usr/local/bin/plop.py:49 (Pdb) r > /usr/local/bin/plop.py(49)__init__() -> self.root_wrappers = root_wrappers (Pdb) p self.svcid 'event-abcd' (Pdb) self.svcid='event-abcdef' (Pdb) p self.svcid 'event-abcdef' (Pdb) r --Return-- > /usr/local/bin/plop.py(50)__init__()->None -> self.pwd = pwd.getpwnam(self.svcid) (Pdb) p self.svcid 'event-abcdef' (Pdb) r KeyError: 'getpwnam(): name not found: event-abcdef' > /usr/local/bin/plop.py(283)fetch_svcids() -> return [CronTab(site, svcid['nom'], svcid['active'], options, env, root, template_wrapper, root_wrappers) for svcid in svcids] (Pdb) p [CronTab(site, svcid['nom'], svcid['active'], options, env, root, template_wrapper, root_wrappers) for svcid in svcids] *** KeyError: KeyError('getpwnam(): name not found: event-abcdef',) (Pdb) self.svcid='event-abcd' *** NameError: name 'self' is not defined (Pdb) b Num Type Disp Enb Where 1 breakpoint keep yes at /usr/local/bin/plop.py:49 breakpoint already hit 1 time (Pdb) restart Restarting /usr/local/bin/plop.py with arguments: > /usr/local/bin/plop.py(6)() -> """ == Ipdb pip install ipdb import ipdb; ipdb.set_trace() == trace python -m trace --trace somefile.py