Qu’est-ce qu’un débogueur? Pourquoi en utiliser un lors de la programmation –
Si vous êtes l’un des nombreux programmeurs qui déboguent en utilisant console.log
, ou quelque chose de similaire, vous manquez de nombreuses fonctionnalités que les débogueurs peuvent offrir. Si vous êtes souvent coincé dans la recherche de bogues de logique, vous pouvez essayer d’utiliser cette fonctionnalité de votre IDE.
Sommaire
Passer au-delà de console.log
Bien sûr, la journalisation de la sortie de débogage sur la console est très nécessaire dans de nombreuses situations. Parfois, il est bon de simplement enregistrer un objet et de vérifier la valeur sur laquelle il est défini, ce qui peut résoudre de nombreux problèmes de base.
Cependant, à la seconde où cela devient plus compliqué que cela, un débogueur peut être utile. Les débogueurs vous permettent de définir des points d’arrêt dans votre code et de suivre l’exécution. Ils vous permettent également d’inspecter la mémoire de votre application lorsqu’elle change avec l’exécution de la fonction. Cela peut être crucial pour dépister les problèmes.
Ils sont assez simples à utiliser. L’implémentation exacte dépendra de votre IDE, mais la plupart vous permettent de définir des points d’arrêt en cliquant sur la barre latérale, qui affichera un cercle rouge généralement pour indiquer que le code s’arrêtera là.
Ensuite, vous pouvez simplement cliquer sur démarrer, et le débogueur se mettra en pause chaque fois que le point d’arrêt est atteint (le cas échéant). Par exemple, vous pouvez définir un point d’arrêt lorsqu’un certain bouton est enfoncé, et le programme s’exécuterait normalement jusqu’à ce que le bouton soit enfoncé. Une fois le point d’arrêt atteint, le programme est entièrement suspendu.
Pendant sa pause, vous pouvez afficher les variables de l’application. Ceci est configurable et défini automatiquement sur ce que Visual Studio juge utile. Vous pouvez regarder manuellement les variables ou simplement afficher les variables locales.
Dans ce cas, il est utile d’afficher les données brutes de la classe. La classe de liste, par exemple, semble être simplement un object[]
. Cependant, en pratique, il a beaucoup d’autres variables sur la classe elle-même. Pas assez pour bien sûr, mais il est intéressant de pouvoir voir tout ce qui est alloué.
Entrez, sortez, franchissez le pas
Bien sûr, mettre simplement le programme en pause n’est pas trop utile, donc les débogueurs auront des outils pour lire essentiellement l’exécution image par image, dans ce cas, ligne par ligne.
Vous trouverez les contrôles dans Visual Studio en haut ici, soulignés en rouge.
Tout cela fait des choses différentes.
- Entrer dans fera passer le débogueur ligne par ligne, mais vous montrera également en gros chaque ligne exécutée. Si vous appelez l’une de vos fonctions, elle passera ou «entrera» dans cette fonction. Une fois la fonction retournée, elle sortira.
- Enjamber va également ligne par ligne, mais dans ce cas est limité à la portée actuelle. Il n’entrera pas dans les appels de fonction, mais passera littéralement à la ligne suivante de votre code source, quel que soit le nombre de fonctions appelées.
- Sors en gros avance rapidement jusqu’au prochain
return
instruction, sortant du cadre de pile actuel. Cela vous permet de quitter les fonctions après en avoir vu suffisamment.
En utilisant ces trois contrôles, vous avez un contrôle total sur le programme et pouvez afficher autant ou aussi peu de l’exécution que vous le souhaitez.
Pendant ce temps, lorsque vous parcourez le code, vous pouvez afficher la mémoire et les variables locales de chaque fonction, examiner leurs valeurs et voir comment elles changent à mesure que vous avancez dans le temps.
Paramètres de point d’arrêt conditionnels
Dans Visual Studio, les points d’arrêt peuvent être plus que simplement «s’arrêter sur cette ligne de code». Vous pouvez définir des points d’arrêt conditionnels qui ne s’activeront que lorsque certaines conditions ou valeurs sont remplies.
Cliquez avec le bouton droit sur un point d’arrêt et sélectionnez « Conditions ».
De là, vous pouvez définir une instruction if qui sera vérifiée avant d’exécuter le point d’arrêt.