OnlineGDB

Afin de tester les exemples et pour réaliser les divers exercices, nous recommandons pour la partie cours le site www.onlinegdb.com. Son environnement permet une prise en main aisée et rapide sans installation et sans configuration.

La partie projet se déroulera sous Visual Studio Community 2022. Vous trouverez plus bas une fiche complète détaillant son installation. ATTENTION, nous n’utilisons pas Visual Studio Code.

Premiers pas

Après votre première connexion, sélectionnez l’environnement C++17, lancez l’exemple en cliquant sur le bouton [RUN], la console de sortie en bas de la page affiche le résultat du traitement.

../_images/firstrun.gif

Breakpoint

  • Dans la marge, cliquez à gauche du numéro de ligne pour créer un breakpoint (rond rouge).

  • Cliquez sur le bouton [DEBUG] pour activer le mode debug et son interface.

  • Cliquez sur le bouton [START] pour lancer le programme.

  • L’exécution s’arrête à la ligne 9 :

    • Les lignes 7 et 8 ont été exécutées.

    • La ligne 9 sera la prochaine ligne exécutée ➪ elle est encadrée en vert.

    • Dans l’interface de droite, les variables courantes sont affichées :

      • Les valeurs de a et b ont ainsi été initialisées.

      • La valeur de c est quelconque car la ligne 9 n’est pas encore exécutée.

  • Appuyez sur le bouton [STOP] pour arrêter le programme et fermer l’interface de débogage.

../_images/breakpoint.gif

Le code associé :

int main()
{
        int a = 1;
        int b = 2;
        int c = 3;
        int d = 4;

        return 0;
}

Positionnez un breakpoint dans le code pour que les variables a, b et c valent 1, 2 et 3 et que d ne soit pas encore affectée. Testez votre réponse avec onlinegdb.

Pas à pas

Après l’arrêt sur un breakpoint, il est possible d’exécuter les lignes suivantes une par une :

• Créez un breakpoint à la ligne x=x*x+1;
• Cliquez sur le bouton [DEBUG] puis [START].
• L’exécution s’arrête à la ligne où est positionné le breakpoint :
\(~~~~~~~\)• La ligne est entourée en vert.
\(~~~~~~~\)• La variable x vaut 2 et i vient d’être initialisée à 0.
• Appuyez sur le bouton [STEP INTO] pour exécuter la ligne en vert :
\(~~~~~~~\) • La valeur de x passe à 5.
\(~~~~~~~\) • La ligne en vert se place sur la boucle for.
• Appuyez sur le bouton [STEP INTO] pour exécuter la ligne en vert :
\(~~~~~~~\) • La valeur de i passe à 1.
\(~~~~~~~\) • La ligne en vert se place sur la ligne x=x*x+1;
• Appuyez sur le bouton [STEP INTO] pour exécuter la ligne en vert :
\(~~~~~~~\) • La valeur de x passe à 26.
../_images/stepover.gif

Le code associé :

int main()
{
        int x = 2;
        for (int i = 0 ; i < 8 ; i++)
           x = x * x + 1;

        return 0;
}

En utilisant le mode pas à pas, trouvez la valeur prise par la variable x avant que la variable i passe à 7.

Les autres fonctions

  • [Continue] : permet de relancer le programme à pleine vitesse jusqu’à la rencontre d’un breakpoint.

  • [StepOver] sur une ligne contenant un appel de fonction : exécute la fonction et stoppe l’exécution à la ligne suivant son appel.

  • [StepInto] sur une ligne contenant un appel de fonction : entre dans le code de la fonction.

  • [StepOut] : termine la fonction courante à pleine vitesse et stoppe l’exécution à la ligne suivant son appel.

Exercices

Indiquez si les affirmations suivantes sont vraies ou fausses :

Par défaut, les programmes sont lancés en mode Debug.

Le rond rouge symbolise un point d’arrêt.

En mode Debug, la ligne en vert est la ligne qui vient d’être exécutée.

Lorsque j’effectue un [StepOver] sur un appel de fonction, je rentre dans le code de cette fonction.

Lorsqu’une boucle s’éternise, je ne peux pas ressortir de la fonction.

Lorsque le programme s’exécute en mode pas à pas, je peux relancer son exécution à pleine vitesse.