Pas à pas

Contenu

Pas à pas#

Cette fois, le défi est de déboguer un programme existant, c’est-à-dire d’identifier, analyser et corriger une erreur qui s’y cache. Ce sera l’occasion d’apprendre à observer l”exécution pas à pas d’un programme, pour bien comprendre son fonctionnement.

Note aux enseignants

À faire

Comportements anormaux:

  • Point d’arrêt ignoré dans certains cas

  • Code qui ne se mets pas à jour dans le déboggueur

Correctif: redémarrer le noyau ou arrêter / redémarer le déboggueur?

La page est longue, d’où beaucoup d’allers-retours. Comment réduire cela?

«Alternative via clic:» l’apprenant risque de passer du temps à tester alors que ce n’est pas forcément pertinent à ce stade. Et cela consomme de l’espace vertical. Supprimer?

  1. Exécutez les deux cellules ci-dessous pour faire apparaître le labyrinthe et exécuter le programme.

from laby.global_fr import *
Laby(niveau="1b")
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 1
----> 1 from laby.global_fr import *
      2 Laby(niveau="1b")

ModuleNotFoundError: No module named 'laby'
debut()
avance()
droite()
avance()
prend()
avance()
droite()
pose()
gauche()
avance()
avance()
gauche()
avance()
droite()
ouvre()

Vous constaterez qu’à la fin la fourmi porte toujours son caillou et ne peux donc pas sortir.

  1. Utilisez les boutons de commande du labyrinthe pour suivre l’exécution du programme pas-à-pas, en marche avant et arrière, etc pour bien comprendre ce que fait la fourmi.

À ce stade, vous avez probablement déjà identifié le problème. Cependant il n’est pas évident de faire le lien entre chaque actions de la fourmi et la ligne du programme correspondante. Pour pallier cela, nous allons utiliser le débogueur.

  1. Activez le débogueur en cliquant sur l’insecte (bug en anglais) à droite de la barre de contrôle en haut de cette page :

../../_images/debug1.png

L’insecte est devenu rouge, les numéros des lignes sont apparus à gauche dans les cellules de code, et une palette s’est ouverte à droite de cette feuille.

Le débogueur permet de définir des points d’arrêts dans le code : l’exécution du programme est mise en pause chaque fois qu’elle atteint un point d’arrêt.

  1. Ajoutez un point d’arrêt sur la deuxième ligne du programme en cliquant à gauche de la ligne avance() :

../../_images/debug2.png

À faire

Un utilisateur était bloqué en ne cliquant pas assez à gauche. Refaire la copie d’écran avec un curseur de souris?

  1. Exécutez la cellule contenant le programme.

Vous remarquerez que la fourmi est en position de départ et que l’exécution est en cours (comme nous l’indique l’étoile entre crochets [*] à gauche de la cellule) : l’exécution est mise en pause sur la ligne du point d’arrêt, juste avant l’exécution de cette ligne.

  1. Appuyez sur la touche F10 (sur certains claviers: fn+F10) pour avancer d’un pas jusqu’à l’instruction suivante. Alternativement, vous pouvez cliquer sur la flèche dans la zone PILE DES APPELS de la palette à droite.

../../_images/debug4.png
  1. Continuez à appuyer sur F10 et observez l’exécution du programme pas à pas. Pour relancer le programme depuis le début, exécutez à nouveau la cellule.

  2. Analysez l’erreur et corrigez la. Relancez l’exécution pas à pas pour vérifier.

  3. Cliquez sur l’insecte pour désactiver le débogueur.

Indication

Si le débogueur a un comportement erratique (point d’arrêt ignoré, …): cliquez deux fois sur l’insecte pour désactiver le débogueur puis reprenez en 3.

Conclusion#

Dans cette feuille, vous avez exécuté pas-à-pas un programme afin d’observer et comprendre précisément son fonctionnement. C’est une stratégie efficace à mettre en œuvre chaque fois que vous avez un doute pour prédire le comportement d’un programme, notamment pour déboguer des erreurs.

Vous avez aussi découvert les commandes essentielles pour utiliser le débogueur. Disponible dans Jupyter et tout bon environnement de développement, c’est un outil de choix pour vous aider à mettre en œuvre cette stratégie.

Au fur et à mesure que vous aborderez des programmes plus complexes, vous raffinerez vos stratégies d’observations et vous vous familiariserez avec la richesse des fonctionalités d’observation qu’offre le débogueur, notamment via la palette de droite dans Jupyter.

Retour à l’accueil