Pi-Python-PuDB

De MCHobby - Wiki
Révision datée du 27 janvier 2013 à 11:56 par Admin (discussion | contributions) (Page créée avec « == 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ù vie... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

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 resté 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

Si vous avez déjà préparé votre environnement Python (voir cet article), l'installation de PuDB sera une simple formalité.

sudo easy_install pudb

Démarré le déboggeur

Pour illuster l'utilisation de PuDB, nous allons débogger le programme "raspi-button2.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 raspi-button2.py raspi-pudb.py

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

nano raspi-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()
#!/usr/bin/env python
# -*- coding: latin-1 -*-

# Exemple de debbogage basé sur raspi-button2.py en 
#   utilisant le debuggeur PuDB.
# http://pypi.python.org/pypi/pudb
#

import RPi.GPIO as GPIO, time
from pudb import set_trace

set_trace()

GPIO.setmode(GPIO.BCM)
GREEN_LED = 18
RED_LED = 23

BUTTON1 = 24
# Dernier état connu du bouton
# Par defaut: le bouton n'est pas considéré comme activé
BUTTON1_STATE = False

GPIO.setup(GREEN_LED, GPIO.OUT)
GPIO.setup(RED_LED, GPIO.OUT)
GPIO.setup(BUTTON1, GPIO.IN)
...

Ressources

Modèle:MCHAccord