{{tag>dev python debug debogage}}
====== Outils de débogage avec python ======
===== Outils d'analyse statique ====
Analysent le script/module et détectent les anomalies
* pylint
* pychecker
* pyflakes
* pep8
* flake8
* mypy: outil standard d'analyse statique du typage
===== pyflakes =====
**pyflakes** est un outil simple capable de détecter les erreurs de syntaxe, les fautes de frappe notamment dans les noms de variables, les imports manquants ou inutilisés. Il peut être intégré à l'EDI notamment à Vim :)
==== Installation =====
Dans son environnement virtuel python ou sur le système local:
$ pip install pyflakes
==== Utilisation ====
En ligne de commande, on peut invoquer pyflakes en passant en argument le nom du script à analyser:
$ pyflakes ./mon_script.py
===== Le module dis =====
Le module **dis** permet de désassembler le bytecode Python.
>>> import dis
>>> def a():
... Union[int,str]
...
>>> dis.dis(a)
Produira sur la sortie standard:
2 0 LOAD_GLOBAL
0 (Union)
2 LOAD_GLOBAL
1 (int)
4 LOAD_GLOBAL
2 (str)
6 BUILD_TUPLE
2
8 BINARY_SUBSCR
10 POP_TOP
12 LOAD_CONST
0 (None)
14 RETURN_VALUE
===== Le débogueur python =====
Plusieurs manières d'utiliser le débogueur:
* En mode interactif, une fois l’exception levée il peut être invoqué pour remonter la pile d'appels
* Lors du lancement d'un script python un argument permet de spécifier un lancement du débogueur
rencontrée ou invoqué
==== pdb avec un script ====
si c'est un script on peut lancer python en mode debug
$ python -m pdb ./mon_script.py
==== pdb en mode interactif ====
Quelques commandes usuelles:
^ Commande ^ Description |
| **l** | (**l**ist) affiche le code |
| **b** | (**b**reak point) positionne un point d'arret sur une instruction ex: b 6 |
| **c** | (**c**ontinue), reprend l’exécution du programme jusqu’à un point d’arrêt, une erreur ou la fin. |
| **n** | (**n**ext) exécute la prochaine instruction |
| **s** | (**s**tep) exécute la prochaine instruction |
La liste des commandes est accessible via **h** ou **help**
===== Références =====
* http://python-scientific-lecture-notes.developpez.com/tutoriel/notes-cours/python-debugging-code/