{{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/