Bonjour et bienvenue.
Dans ce cours, je vais vous montrer comment vous pouvez utiliser le débogueur.
Je vais donc parcourir l'interface graphique, vous montrer comment vous pouvez démarrer un programme en mode débogage, comment vous
pouvez définir des points d'arrêt, comment vous pouvez regarder la pile d'appels et comment vous pouvez visualiser différentes variables à l'aide
de la fenêtre de surveillance.
Il s'agit d'un simple programme qui détermine une moyenne.
Je vais utiliser ceci comme démonstration.
Tout ce qu'il fait, c'est lire trois nombres entiers et les stocker, puis calculer leur moyenne.
Avant d'utiliser le débogueur, il faut s'assurer que la configuration
est correcte.
J'en ai déjà parlé dans une vidéo précédente, en configurant Code Light pour l'utilisation du débogueur.
Mais pour vous rafraîchir la mémoire, vous pouvez sélectionner le projet ici, faire un clic droit et aller dans
les paramètres.
En fonction de la plateforme sur laquelle vous travaillez, vous devez vous assurer que les
paramètres du débogueur, ici à gauche, ont le bon chemin vers GDB.
Si vous êtes sous Windows, cela peut impliquer l'utilisation de GDB X de Cygwin ou de MinGW w64, peu importe ce que vous avez réussi
à faire.
Si vous êtes sous Unix ou Linux, ce chemin n'a même pas besoin d'être défini.
L'autre chose importante est que dans les options du compilateur, vous devez vous assurer que
vous compilez pour le débogage afin que Dash G dwarf soit sur dash o pour l'optimisation.
Là encore, sous Windows, ces éléments doivent être définis pour que les informations de débogage accompagnent votre
exécutable.
Vous devez également vous assurer que vous construisez en mode débogage.
Il faut donc s'assurer que l'option debug est sélectionnée et non l'option release.
Une fois tous ces éléments correctement configurés, vous devriez être en mesure d'utiliser le débogueur et la lumière
du code.
Si vous avez des problèmes avec cela, revenez à ma vidéo pour la configuration sur votre plateforme.
Le débogueur et Code Light.
Le concept le plus important concernant le débogueur est l'idée d'un point d'arrêt.
Un point d'arrêt est donc quelque chose que vous pouvez placer dans votre programme et qui arrêtera l'exécution de
votre code.
Vous pouvez essentiellement dire, Hey, je veux m'arrêter à cette ligne et votre programme lorsque vous lancez le
débogueur s'arrêtera à cette ligne Cela vous permet de regarder les variables, les valeurs des variables.
Il vous permet de parcourir votre code ligne par ligne pour essayer de diagnostiquer et de résoudre les problèmes
éventuels.
Normalement, lorsque vous exécutez votre programme, si vous essayez de l'exécuter dans le débogueur et que vous n'avez pas défini de point
d'arrêt, rien ne se passera.
Normalement, lorsque vous construisez, vous pouvez aller construire votre projet comme n'importe
quel autre projet, aller à la construction, aller à la construction du projet.
Lorsque vous le construisez et que vous l'exécutez en mode débogage, vous devez aller à l'option de menu du débogueur et vous
devez aller à démarrer, continuer le débogage.
Et lorsque vous exécutez à nouveau cette commande, si vous avez défini un point d'arrêt, il sera atteint.
Si aucun point d'arrêt n'est défini, il s'exécutera simplement.
Si nous essayons d'exécuter ce programme en mode débogage, il s'affiche et demande d'entrer parce qu'il
s'arrête juste aux nombres et qu'il suffit de taper quelques nombres pour qu'il se ferme.
Il n'imprime même pas les informations, n'est-ce pas ?
Il est donc très important, si vous souhaitez utiliser le débogueur, qu'au moins un point d'arrêt soit défini.
La manière la plus simple de définir un point d'arrêt est de cliquer à l'intérieur de la marge par les numéros de ligne sur le numéro de ligne où vous souhaitez
définir le point d'arrêt.
Là encore, un point d'arrêt va stopper l'exécution sur ce numéro de ligne.
Si nous plaçons un point d'arrêt juste à côté de la fonction printf à la ligne dix, il suffit de double-cliquer, et vous
verrez qu'un cercle rouge se place.
Cela signifie au débogueur qu'il doit s'arrêter à la ligne dix.
Encore une fois, la façon dont nous démarrons le débogueur est d'aller dans le débogueur et de dire, démarrez, continuez, d'accord
?
Tout le reste est en quelque sorte grisé, n'est-ce pas ?
Démarrons donc le débogueur pour atteindre ce point d'arrêt.
Commençons donc à poursuivre le débogueur et nous dirons construire et déboguer et vous remarquerez
que le programme s'arrête à la ligne dix.
Vous voyez cette flèche verte, vous voyez aussi que le panneau du débogueur est apparu.
Si vous allez dans Affichage, vous pouvez faire apparaître le volet du débogueur manuellement ou automatiquement
lorsque vous passez en mode débogage. Le volet du débogueur comporte de nombreux onglets d'information différents.
Vous pouvez également passer par le débogueur, en allant dans les fenêtres GDB, vous pouvez voir tous les éléments
qui sont cochés.
Il existe de nombreuses fenêtres de débogage que vous pouvez consulter.
Ainsi, l'aspect local est généralement lié à la surveillance des variables locales.
Vous pouvez placer une montre sur une variable de sorte que si la variable change, elle apparaîtra.
La sortie est utilisée pour les différentes options de débogage et les fils de sortie.
Vous pouvez en fait regarder les threads qui exécutent votre programme.
Nous nous concentrons sur le concept plus avancé de Callstack.
Nous examinons essentiellement la pile d'appels et les éléments locaux.
Ce sont les deux éléments les plus importants qui vous aident à déboguer, ainsi que la mémoire et les points d'arrêt.
Vous pouvez voir où sont placés les points d'arrêt.
Il y a donc beaucoup d'options différentes.
Nous sommes actuellement arrêtés à la ligne dix.
Nous pouvons examiner la pile d'appels.
La pile d'appels nous montre que la fonction principale est appelée.
Si nous examinons les données locales, nous voyons trois variables, zéro, un et zéro.
Nous n'avons pas encore saisi d'informations dans ces deux champs, qui sont initialisés à zéro un et zéro.
La montre permet d'en ajouter.
Ajouter en appuyant sur le signe plus pour ajouter une surveillance sur une variable particulière.
L'autre chose importante à noter est que lorsque vous exécutez en mode débogage, vous avez maintenant la barre
d'outils du débogueur, n'est-ce pas ?
Le bouton de lecture continue.
Il en sera ainsi.
Si j'appuie sur play, cela quittera simplement le programme, n'est-ce pas ?
Il se met à fonctionner.
Le programme demande alors des informations.
J'ai donc appuyé sur "play".
Je retourne à l'application de la console et le message Enter s'affiche.
J'ai donc atteint mes trois chiffres dans les exécutions du programme.
Vous n'avez donc toujours pas vu la fonction d'impression.
La fenêtre a disparu.
Une fois de plus, nous lançons le mode de débogage et nous allons à nouveau au point d'arrêt, le panneau du débogueur s'affiche, il s'arrête
à la ligne dix.
La barre d'outils est importante car c'est ainsi que vous pouvez avancer dans votre code et
vous pouvez utiliser la barre d'outils ou aller dans le débogueur et regarder toutes les options ici.
Vous pouvez donc dire que l'instruction suivante, l'instruction suivante, l'instruction suivante, l'instruction suivante, l'instruction suivante, l'instruction suivante et l'instruction suivante
vont à l'intérieur d'une fonction.
Si une fonction est appelée sur cette ligne, l'instruction step into est plus proche du langage d'assemblage.
Ensuite, nous allons sauter cette ligne de code.
Les instructions relatives au cou sont en quelque sorte la même chose.
Step out, essaie de sortir d'une fonction si vous êtes déjà dans une fonction et de passer à la ligne de carotte.
En fait, je pense que cela va au curseur.
Il en va de même pour la ligne de carotte.
Vous pouvez activer et désactiver les points d'arrêt, les désactiver tous, et ainsi
de suite.
Ou encore, la barre d'outils.
En général, j'utilise la barre d'outils parce qu'elle est déjà en place.
Ensuite, si vous regardez à nouveau les différentes fenêtres, la pile d'appels locaux et les points d'arrêt.
Vraiment ceux qui sont importants.
Ceci indique que j'ai un point d'arrêt à la ligne dix.
Et puis je pense que l'on dit simplement le curseur.
Je me suis donc arrêté à print F enter à la ligne dix.
Je peux passer à l'instruction suivante et cela ira jusqu'à la ligne 11.
F est en fait une fonction de blocage qui demande des données.
Donc, si j'essaie de passer à l'étape suivante, il y a une sorte de pause.
Il se peut que vous deviez appuyer plusieurs fois sur la touche "suivant".
Ce que je fais habituellement lorsque le programme demande une entrée et que je veux qu'il soit bloqué, qu'il s'arrête
et qu'il passe à l'étape suivante.
Je vais juste mettre un point d'arrêt sur la ligne suivante et appuyer sur le bouton de lecture.
J'appuie maintenant sur le bouton de lecture et rien ne se passe parce qu'il attend d'être saisi.
Dans le programme, il est indiqué "Enter".
Je peux donc appuyer sur cinq, six, sept, appuyer sur le bouton d'entrée et atteindre mon point de rupture.
Nous sommes maintenant au bouton d'impression où nous pouvons accéder à la fonction d'impression.
En fait, la première étape consiste à passer à la fonction moyenne.
Ainsi, si nous disons "step into", nous voyons que nous passons à la fonction moyenne.
Ce que vous remarquerez, c'est que si vous regardez vos variables, vous verrez qu'elles changent.
Ainsi, si vous passez à la ligne suivante, vous passez à la ligne suivante en 27, puis en 28, et vous continuez à frapper.
Ensuite, vous sautez et vous vous retrouvez à la fin de la fonction.
Vous pouvez alors appuyer sur play et vous pouvez voir que votre programme est maintenant terminé et que la fenêtre a disparu.
Mais vous pouvez examiner vos variables, vous pouvez examiner tout le reste.
Vous pouvez également placer un point de rupture à l'intérieur de la fonction d'impression, ici même.
Et si nous passons à cela, nous pouvons voir à nouveau que la fonction print arrêtera l'exécution au lieu de la moyenne.
Ensuite, nous pouvons voir ce qui se passe dans la réalité si nous passons à l'application,
vous pouvez voir que les informations ont été imprimées.
C'est vrai ?
Lorsque vous continuez, lorsque vous allez jusqu'au bout, vous obtenez l'instruction return et le programme se termine.
Il est donc important, si vous voulez voir la sortie du programme, de placer un point
d'arrêt avant le retour et de ne pas continuer.
Vous pouvez arrêter le débogueur en cliquant sur le rectangle rouge, mettre le débogueur en pause en cliquant sur les deux
barres parallèles, redémarrer le débogueur avec cette option et la pile d'appels.
Encore une fois, c'est plus facile à voir ici si vous êtes à l'intérieur d'une fonction et que vous lancez le débogueur, nous allons lancer le débogueur
à nouveau.
Dites débogueur, démarrez, continuez.
Et lorsque nous atteignons ce point de rupture après avoir saisi des informations à l'intérieur d'une fonction, vous verrez que la pile de
wagons contient le main et le print, comme nous l'avons montré précédemment.
Vous pouvez donc voir la dernière fonction qui a été invoquée. Avec un programme qui comporte de nombreuses fonctions,
la pile d'appels peut être beaucoup plus importante que cela.
La seule autre chose qui peut être importante, ce sont les points d'arrêt.
Si vous voulez voir quels sont les points d'arrêt que vous avez définis, il vous montrera tous les points d'arrêt et l'ensemble du programme
où ils se trouvent.
Mais vous devrez jouer avec, vous familiariser avec, vous sentir à l'aise avec, et l'utiliser assez souvent pour des problèmes
que vous ne pouvez pas résoudre avec des techniques ou des programmes de débogage de base.
Crash va ligne par ligne.
En procédant ligne par ligne, il est possible de voir le programme se terminer lorsqu'il se bloque et
de savoir sur quelle ligne cela s'est produit.
Encore une fois, il s'agit d'un petit programme, mais il devrait vous permettre de comprendre comment fonctionne le débogage.
Encore une fois, j'espère que cela vous a été utile.
La meilleure façon d'apprendre ce genre de choses est de commencer à jouer avec et à l'utiliser.
Faites référence à l'un des programmes sur lesquels vous avez travaillé lors de votre précédent défi.
Ajouter un point d'arrêt, c'est très simple.
Il suffit de cliquer à l'intérieur de l'objet pour ajouter des points de rupture.
Démarrez-le en mode débogage et parcourez chaque ligne pour voir comment les variables changent et comment la
pile d'appels augmente.
Si vous avez des fonctions plus importantes.
Nous vous remercions.