Étape 4 : Exécuter du code dans le débogueur

Étape précédente : Utiliser la fenêtre REPL interactive

Visual Studio fournit des fonctionnalités de gestion des projets, une expérience d’édition enrichie, la fenêtre interactive et un débogage complet pour le code Python. Dans le débogueur, vous pouvez exécuter votre code pas à pas, notamment chaque itération d’une boucle. Vous pouvez également interrompre le programme chaque fois que certaines conditions sont remplies. À tout moment, quand le programme est en pause dans le débogueur, vous pouvez examiner l’état de l’ensemble du programme et changer la valeur des variables. Ces actions sont essentielles pour le suivi des bogues du programme et fournissent également des aides utiles pour suivre le flux exact du programme.

  1. Remplacez le code du fichier PythonApplication1.py par le code qui suit. Cette variation du code se développe make_dot_string, ce qui vous permet d’examiner ses étapes discrètes dans le débogueur. Il place également la boucle for dans une fonction main et l’exécute explicitement en appelant cette fonction :

    from math import cos, radians
    
    # Create a string with spaces proportional to a cosine of x in degrees
    def make_dot_string(x):
        rad = radians(x)                             # cos works with radians
        numspaces = int(20 * cos(rad) + 20)          # scale to 0-40 spaces
        st = ' ' * numspaces + 'o'                   # place 'o' after the spaces
        return st
    
    def main():
        for i in range(0, 1800, 12):
            s = make_dot_string(i)
            print(s)
    
    main()
    
  2. Vérifiez que le code fonctionne correctement en appuyant sur F5 ou en sélectionnant la commande de menu Déboguer>Démarrer le débogage. Cette commande exécute le code dans le débogueur. Pour l’instant, rien n’a été fait pour suspendre le programme pendant son exécution. Il imprime simplement un modèle de vague pour quelques itérations. Appuyez sur une touche pour fermer la fenêtre de sortie.

    Conseil

    Pour fermer automatiquement la fenêtre Sortie à la fin de l’exécution du programme, sélectionnez la commande de menu Outils>Options, développez le nœud Python, sélectionnez Débogage, puis désactivez l’option Attendre une entrée quand le processus quitte de manière habituelle :

    Python debugging option to close the output window on normal program exit

    Pour plus d’informations sur le débogage et la définition des arguments de script et d’interpréteur, consultez Déboguer votre code Python.

  3. Définissez un point d’arrêt sur la première instruction for en cliquant une fois dans la marge grise à gauche en regard de cette ligne, ou en plaçant le point d’insertion dans cette ligne et en utilisant la commande Déboguer>Basculer le point d’arrêt (F9). Un point rouge apparaît dans la marge grise pour indiquer le point d’arrêt (comme indiqué par la flèche) :

    Setting a breakpoint

  4. Redémarrez le débogueur (F5). Vous voyez à présent que l’exécution du code s’arrête sur la ligne où ce point d’arrêt est défini. Vous pouvez examiner ici la pile des appels et les variables locales. Les variables qui sont dans l’étendue apparaissent dans la fenêtre Automatique quand elles sont définies ; vous pouvez également basculer vers la vue Variables locales dans le bas de cette fenêtre pour afficher toutes les variables trouvées par Visual Studio dans l’étendue active (notamment les fonctions), même avant qu’elles soient définies :

    Breakpoint UI experience for Python

  5. Observez la barre d’outils de débogage (affichée ci-dessous) en haut de la fenêtre Visual Studio. Cette barre d’outils fournit un accès rapide aux commandes de débogage les plus courantes (qui sont également accessibles sur le menu Débogage) :

    Essential debugging toolbar buttons

    Les boutons sont les suivants, de gauche à droite :

    Bouton Commande
    Continuer (F5) Exécute le programme jusqu’au point d’arrêt suivant ou jusqu’à la fin du programme.
    Arrêter tout (Ctrl+Alt+Pause) Met en pause un programme de longue durée.
    Arrêter le débogage (Maj+F5) Arrête le programme où qu’il en soit, puis quitte le débogueur.
    Redémarrer (Ctrl+Maj+F5) Arrête le programme où qu’il en soit, puis le redémarre à partir du début dans le débogueur.
    Afficher l’instruction suivante (Alt+Num*) Bascule vers la ligne de code suivante à exécuter. Cela est utile quand vous naviguez au sein de votre code pendant une session de débogage et que vous voulez retourner rapidement au point où le débogueur est en suspens.
    Pas à pas détaillé (F11) Exécute la ligne de code suivante, en entrant dans les fonctions appelées.
    Pas à pas (F10) Exécute la ligne de code suivante, sans entrer dans les fonctions appelées.
    Pas à pas sortant (Maj+F11) Exécute le reste de la fonction actuelle et interrompt l’exécution dans le code appelant.
  6. Faites un pas à pas principal de l’instruction for en utilisant Pas à pas principal. L’exécution pas à pas signifie que le débogueur exécute la ligne de code active, y compris tous les appels de fonction, puis s’interrompt à nouveau immédiatement. Notez comment, dans le code, la variable i est maintenant définie dans les fenêtres Variables locales et Automatique.

  7. Faites un pas à pas principal de la ligne de code suivante, qui appelle make_dot_string et s’interrompt. Pas à pas principal signifie ici spécifiquement que le débogueur exécute la totalité de make_dot_string et interrompt l’exécution à son retour. Le débogueur ne s’arrête pas à l’intérieur de cette fonction, sauf si un point d’arrêt distinct s’y trouve.

  8. Continuez à demander un certain nombre de fois l’exécution en pas à pas principal du code, et observez comment les valeurs changent dans les fenêtres Variables locales ou Automatique.

  9. Dans la fenêtre Variables locales ou Automatique, double-cliquez dans la colonne Valeur pour la variable i ou s et changez la valeur. Appuyez sur Entrée, ou sélectionnez toute zone en dehors de cette valeur pour appliquer les changements.

  10. Continuez à parcourir le code pas à pas en utilisant Pas à pas détaillé. Pas à pas détaillé signifie que le débogueur entre à l’intérieur d’un appel de fonction pour lequel il a des informations de débogage, par exemple make_dot_string. Une fois à l’intérieur de make_dot_string, vous pouvez examiner ses variables locales et exécuter son code spécifiquement.

  11. Continuez l’exécution pas à pas avec Pas à pas détaillé. Notez qu’au moment où vous atteignez la fin de make_dot_string, le pas suivant retourne à la boucle for avec la nouvelle valeur de retour dans la variable s. Quand vous revenez à l’instruction print, notez que Pas à pas détaillé sur print n’entre pas dans cette fonction. La raison en est que print n’est pas écrit en Python, mais qu’il s’agit de code natif au sein du runtime Python.

  12. Continuez à utiliser Pas à pas détaillé jusqu’à ce que vous reveniez à mi-chemin de make_dot_string. Utilisez ensuite Pas à pas sortant et notez que vous revenez alors à la boucle for. Avec Pas à pas sortant, le débogueur exécute le reste de la fonction, puis s’interrompt automatiquement dans le code appelant. Cela est utile lorsque vous avez parcouru une partie d’une fonction longue que vous souhaitez déboguer. Vous allez parcourir le reste sans définir de point d’arrêt explicite dans le code appelant.

  13. Pour continuer l’exécution du programme jusqu’au prochain point d’arrêt, utilisez Continuer (F5). Étant donné que vous avez défini un point d’arrêt dans la boucle for, vous vous arrêtez sur l’itération suivante.

  14. Parcourir pas à pas des centaines d’itérations d’une boucle peut être fastidieux : Visual Studio vous permet donc d’ajouter une condition à un point d’arrêt. Le débogueur interrompt alors le programme au point d’arrêt seulement quand la condition est remplie. Par exemple, vous pouvez utiliser une condition avec le point d’arrêt sur l’instruction for pour qu’elle s’interrompe seulement quand la valeur de i dépasse 1 600. Pour définir la condition, cliquez avec le bouton droit sur le point rouge représentant le point d’arrêt, puis sélectionnez Conditions (Alt+F9>C). Dans la fenêtre contextuelle Paramètres de point d’arrêt qui s’affiche, entrez i > 1600 comme expression et sélectionnez Fermer. Appuyez sur F5 pour continuer. Notez que le programme exécute de nombreuses itérations avant l’arrêt suivant.

    Setting a breakpoint condition

  15. Pour exécuter le programme jusqu’à son terme, désactivez le point d’arrêt en cliquant avec le bouton droit sur le point dans la marge, puis en sélectionnant Désactiver le point d’arrêt (Ctrl+F9). Sélectionnez ensuite Continuer (ou appuyez sur F5) pour exécuter le programme. Quand le programme se termine, Visual Studio arrête sa session de débogage et retourne au mode Édition. Vous pouvez également supprimer le point d’arrêt en sélectionnant son point ou en cliquant avec le bouton droit sur le point et en sélectionnant Supprimer le point d’arrêt. Cela supprime également toute condition que vous avez précédemment définie.

Conseil

Dans certaines situations, par exemple en cas d’échec du lancement de l’interpréteur Python lui-même, la fenêtre Sortie peut apparaître seulement brièvement, puis se fermer automatiquement sans vous donner la possibilité de visualiser les messages d’erreurs. Si cela se produit, cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions, sélectionnez Propriétés, l’onglet Déboguer, puis ajoutez -i au champ Arguments de l’interpréteur. Avec cet argument, l’interpréteur passe en mode interactif à la fin d’un programme, maintenant ainsi la fenêtre ouverte jusqu’à ce que vous entriez Ctrl+Z>Entrée pour quitter.

Étape suivante

Approfondir la question