Débogage Python3 et PuDB

De Enseignement secondaire.
Aller à : Navigation, rechercher

Sommaire

Source

D'après [1].

Introduction

Programmer en Python c'est bien... pouvoir le faire en SSH c'est pratique mais que faire lorsque l'on a besoin de faire du débogage pour trouver d'où vient l'erreur?

Il y a deux techniques:

  1. Utiliser la fonction print() pour afficher des message dans la console (fonctionne aussi en ssh) se faire une idée de ce qui se passe dans le programme.
  2. Utiliser un programme de débogage (appelé debugger en anglais, débugger en français) qui permettra de suivre le programme pas à pas dans une interfacer aussi conviviale que possible.

Utilité d'un débugger

Le débugger est un programme spéciale qui peu prendre le contrôle de votre programme.

C'est pratique car cela permet d'exécuter votre programme ligne par ligne... et donc de le suivre à la trace tout en permettant d'explorer la valeur des variables et la pile d'appels (toutes les fonctions appelées avant celle que vous déboguez).

Il est également possible de placer des point d'arrêt (breakpoint en anglais) sur lesquels le débuggeur s'arrêtera avant l'exécution de cette ligne.

Une des particularité du débuggeur, c'est qu'il peut aussi rester en "veille" tant que votre programme fonctionne normalement et revenir en premier plan juste au moment ou l'erreur se produit (ou un breakpoint/point d'arrêt atteint).

C'est généralement le moment idéal pour investiguer un problème :-)

PuDB un débugger texte

Il y a probablement bon nombre de débuggeur sur le marché, tous avec leurs avantages et leurs inconvénients.

PuDB est plus intéressant dans le sens où il fonctionne en mode texte et en SSH! De surcroît il est facile a installer sur un Raspberry.

Vous pouvez donc prendre le contrôle un programme à distance et le débugger assez facilement avec un interface offrant une convivialité honorable (ce qui est loin d'être négligeable).

Pudb-screenshot.png

Vous pouvez également consulter ce screencast.

Installer PuDB

Sous Linux (-Ubuntu):

sudo apt-get update
sudo apt-get install python3-setuptools python3-dev
sudo easy_install3 pudb

Faire du deboggage

Voici un petit exemple, pas à pas, expliquant comment faire du débogage.

Préparation de l'exemple

Pour illuster l'utilisation de PuDB, nous allons débogger le programme "exemple.py" issu de ce tutoriel.

Comme l'utilisation de PuDB requière une petite modification du script, nous allons d'abord en faire une copie :-)

cp exemple.py exemple-pudb.py

Ajouter set_trace()

Nous allons ensuite éditer le contenu de exemple-pudb.py pour activer de débogage.

nano exemple-pudb.py

Ci-dessous, nous avons repris les première lignes du programme Python.

Notez l'ajout des lignes:

from pudb import set_trace
set_trace()

Voici donc les première lignes du programme Python:

# Importer les fonctions nécessaires:
from pudb import set_trace
set_trace()

from math import sqrt


# Définition de fonctions:

def generePremiers(n):
    "generePremiers(int n) --> list. Retourne la liste des nombres premiers \
situés entre 2 et n selon le crible d'Erathosthène."

    indicesPremiers = [1]*(n+1)       # liste de n+1 entiers 1 d'indice premier

    i = 2

...

Démarrer le débuggeur

Pour commencer le débogage de votre programme, il faut démarrer votre script Python avec la commande suivante:

sudo python3 -m pudb exemple-pudb.py

Il est capital d'utiliser un sudo parce que le débuggeur doit pouvoir accéder à la mémoire du processus (dans /dev/mem ).

Au premier démarrage du débugger, vous serez invité à préciser vos préférences. Vous pouvez simplement vous déplacer sur le bouton [Ok] à l'aide de la flèche sur le clavier et accepter les paramètre en pressent la touche Entrée/Enter

Et voila!

Pudb.png

Notez au passage la déclaration des variables (et leurs valeurs) en haut à droite.

Raccourcis clavier

PuDB se contrôle au clavier. Si cela paraît un peu "basic" c'est aussi terriblement efficace en ssh :-)






Ressources

Outils personnels
Espaces de noms
Variantes
Actions
Navigation
Boîte à outils