Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python debugger

Introduction au debugging Python

* S'appuyer sur les exceptions
* Commandes principales de pdb
* pylint & pyflakes pour analyser le code avant exécution
* git bisect pour trouver le commit de votre bug

  • Login to see the comments

  • Be the first to like this

Python debugger

  1. 1. PYTHON DEBUGGER Python Meetup Bordeaux – Node 2016-03-09 Damien Garaud / @jazzydag
  2. 2. Y'A UN BUG ?
  3. 3. SCÈNE DE CRIME Suspicion Où Motifs (raison) Résoudre (corriger)
  4. 4. QUAND Lors d'un test... ou d'un run Du code à vous... ou pas
  5. 5. Y'A LE BON, ET LE MAUVAIS Celui qui saute aux yeux, vous avez une exception Celui qui ne se voit pas, mais vous savez qu'y a un blème
  6. 6. LES EXCEPTIONS SONT VOS AMIES NameError, SyntaxError et ImportError TypeError, ValueError, IndexError, KeyError AttributeError, IOError, MemoryError
  7. 7. COMMENT ? Le 1er jour vient le print() Exceptions ou point d'arrêt Examiner la pile d'appels avec un IDE ou en mode "debug"
  8. 8. EXEMPLE import pandas as pd def main(fname): data = read_data(fname) result = data_processing(data) return result def read_data(fname): data = pd.read_csv(fname) return data def data_processing(data): return data.query("age <= 60") if __name__ == '__main__': df = main("data.csv")
  9. 9. PILE D'APPELS +------------------+ | main() | | | +------------------+ +------------------+ | read_data() | | | +------------------+ +------------------+ | processing() | | | +------------------+ Comme une pile en faite
  10. 10. LANCER PYTHON EN MODE DEBUG python -m pdb script.py /path/to/script.py (Pdb) type command here : Python debuggeurpdb
  11. 11. PRINCIPALES COMMANDES h(elp) c(ontinue) l(ist) s(tep) n(ext) u(p) a(rgs) q(uit)
  12. 12. IPYTHON : lance pdb dans IPython : commande magique IPython ipdb %pdb
  13. 13. POINT D'ARRÊT S'arrêter où l'on souhaite import pdb; pdb.set_trace() import ipdb; ipdb.set_trace() On doit modifier le code
  14. 14. POINT D'ARRÊT Dans le débuggeur breakpoint 1. On lance python -m pdb 2. Imports nécessaires 3. b funcname
  15. 15. AVANT L'EXÉCUTION Outils d'analyse pylint pyflakes
  16. 16. MAIS ÇA MARCHAIT AVANT La semaine dernière, ça marchait, je t'assure Gestionnaire de version à la rescousse git bisect --help
  17. 17. UNE CHOSE À RETENIR Faites des tests unitaires
  18. 18. MERCI !

×