Le debug avec VS Code

Objectifs

À la fin de cette séance, vous serez capables de :

  • Utiliser le debugger de VS Code plutôt que des print()
  • Placer et gérer des breakpoints
  • Naviguer dans le code pas à pas
  • Observer l’état des variables
  • Utiliser Watch et la Debug Console

Introduction

Jusqu’à maintenant, vous avez probablement utilisé des print() ou le débogueur pour comprendre ce qui se passe dans votre code. C’est une approche basique, mais elle devient vite inefficace sur des projets complexes.

Le debugger de VS Code est un outil qui vous permet de :

  • Mettre en pause le code à un moment précis
  • Observer toutes les variables et leur contenu
  • Avancer pas à pas dans le code
  • Modifier les valeurs en temps réel

1. Pourquoi le debugger plutôt que des print() ?

1.1 Les limites des print()

def calculer_remise(prix, pourcentage, montant_min):
    remise = prix * pourcentage / 100
    print(f"prix={prix}, pourcentage={pourcentage}, remise={remise}")  # À ajouter partout !
    
    if remise > montant_min:
        print(f"Remise appliquée: {remise}")  # Changer les conditions, réexecuter
        prix_final = prix - remise
    else:
        print(f"Remise trop faible: {remise} < {montant_min}")
        prix_final = prix
    
    print(f"prix_final={prix_final}")  # À supprimer après
    return prix_final

Problèmes :

  • Vous devez ajouter des print() partout
  • Vous devez relancer le programme à chaque modification
  • Impossible de “sauter en arrière” pour voir l’état précédent
  • Difficile à utiliser en équipe (traces partout dans le code)

1.2 Avec le debugger

def calculer_remise(prix, pourcentage, montant_min):
    remise = prix * pourcentage / 100  # ← Breakpoint ici
    
    if remise > montant_min:
        prix_final = prix - remise
    else:
        prix_final = prix
    
    return prix_final

Avantages :

  • Mettez simplement un breakpoint
  • Exécution pausée au breakpoint
  • Inspectez toutes les variables en temps réel
  • Avancez ligne par ligne
  • Zéro modification du code

2. Configuration du debugger

2.1 Installation

VS Code inclut le debugger Python par défaut, mais vous avez besoin d’une extension :

  1. Ouvrez VS Code
  2. Allez à l’onglet Extensions (Ctrl+Shift+X)
  3. Cherchez “Python”
  4. Installez l’extension Microsoft “Python”

2.2 Créer une configuration de debug

Créez un fichier .vscode/launch.json à la racine de votre projet :

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Script courant",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

Explication :

  • "program": "${file}" : Débogue le fichier actuellement ouvert
  • "console": "integratedTerminal" : Affiche la sortie dans le terminal VS Code
  • "justMyCode": true : Ignore le code des bibliothèques (plus clair)

3. Mettre des breakpoints et naviguer dans le code

3.1 Placer un breakpoint

Un breakpoint arrête l’exécution à une ligne spécifique. C’est simple :

  1. Cliquez à gauche du numéro de ligne (dans la gouttière)
  2. Un point rouge apparaît
  3. Exécutez en mode debug
  4. L’exécution pause à ce breakpoint

3.2 Lancer le debugger

Option 1 : Bouton “Run” en haut à droite → Sélectionner “Python: Script courant”

Option 2 : Raccourci clavier

F5  (Lancer le debugger)

Option 3 : Menu Debug → Start Debugging

3.3 Les commandes de navigation

Une fois suspendu au breakpoint, vous pouvez :

  • Continue (F5) : Reprendre jusqu’au prochain breakpoint
  • Step Over (F10) : Exécuter la ligne actuelle et s’arrêter à la suivante
  • Step Into (F11) : Entrer dans une fonction appelée
  • Step Out (Shift+F11) : Sortir de la fonction actuelle

4. Observer les variables : Watch et Local

4.1 Le panneau Local

Quand vous êtes au breakpoint, le panneau Debug (à gauche) affiche :

  • Local : Les variables dans la fonction actuelle
  • Global : Les variables globales
  • Builtins : Les variables intégrées Python

Chaque variable montre :

  • Son nom
  • Sa valeur
  • Son type

4.2 Observer une expression avec Watch

Watch permet de surveiller une expression spécifique

Au breakpoint :

  1. Allez au panneau Debug (à gauche)
  2. Trouvez la section “Watch”
  3. Cliquez le “+”
  4. Tapez une expression : prix * pourcentage / 100
  5. La valeur s’affiche en temps réel

4.3 Évaluer le code à la volée

La Debug Console vous permet d’exécuter du code Python quand vous êtes au breakpoint :

>>> prix
100
>>> pourcentage
15
>>> prix * pourcentage / 100
15.0

C’est très utile pour tester des calculs sans modifier le code !

5. Comment déboguer efficacement

  1. Placer un breakpoint au début de la fonction
  2. Lancer le debugger (F5)
  3. Avancer ligne par ligne (F10)
  4. Observer comment les variables changent
  5. Identifier où le bug se produit
Exercice 1 : Premier breakpoint

Créez une fonction additionner(a, b) qui retourne la somme de deux nombres.

  1. Placez un breakpoint au début de la fonction
  2. Lancez le debugger
  3. Observez les variables a et b dans le panneau Local
  4. Avancez pas à pas
  5. Observez la variable resultat

Exercice 2 : Déboguer une boucle

Créez une fonction qui affiche les carrés des nombres de 1 à 5 :

def afficher_carres():
    for i in range(1, 6):
        carre = i ** 2
        print(f"{i}² = {carre}")

afficher_carres()
  1. Placez un breakpoint dans la boucle
  2. Lancez le debugger
  3. Avancez pas à pas (F10)
  4. Observez comment i et carre changent

This site uses Just the Docs, a documentation theme for Jekyll.