Tout d’abord, regardez le débogueur Visual Studio
Cette rubrique présente les outils de débogueur fournis par Visual Studio. Dans Visual Studio, lorsque vous déboguez votre application, cela signifie généralement que vous exécutez l’application avec le débogueur activé (c’est-à-dire en mode débogueur). Lorsque vous effectuez cette opération, le débogueur fournit de nombreuses façons de voir ce que fait votre code pendant son exécution. Vous pouvez parcourir votre code et examiner les valeurs stockées dans les variables, vous pouvez définir des montres sur des variables pour voir quand les valeurs changent, vous pouvez examiner le chemin d’exécution de votre code, et al. Si c’est la première fois que vous avez essayé de déboguer du code, vous pouvez lire Débogage pour les débutants absolus avant de passer à cette rubrique. Si vous essayez d’effectuer une tâche spécifique et que vous avez besoin de savoir quelle fonctionnalité utiliser, consultez Recherche de fonctionnalités du débogueur. Pour essayer le débogage assisté par l’IA, consultez Déboguer avec Copilot.
Les fonctionnalités décrites ici s’appliquent à C#, C++, Visual Basic, JavaScript et d’autres langages pris en charge par Visual Studio (sauf indication contraire).
Définir un point d’arrêt et démarrer le débogueur
Les points d’arrêt sont une fonctionnalité utile lorsque vous connaissez la ligne de code ou la section de code que vous souhaitez examiner en détail au moment de l’exécution. Pour plus d’informations sur les divers types de points d’arrêt, tels que les points d’arrêt conditionnels et les points d’arrêt de fonction, veuillez consulter Utilisation de points d’arrêt.
Pour déboguer, vous devez démarrer votre application avec le débogueur attaché au processus d’application. Pour ce faire :
- Appuyez sur F5 (Déboguer > Démarrer le débogage), qui est la méthode la plus courante.
Toutefois, pour le moment, vous n’avez peut-être pas défini de points d’arrêt pour examiner le code de votre application. Nous allons donc commencer par le débogage. Les points d'arrêt constituent une fonctionnalité élémentaire et essentielle de toute procédure de débogage fiable. Un point d’arrêt indique où Visual Studio doit suspendre votre code en cours d’exécution afin de pouvoir examiner les valeurs des variables, ou le comportement de la mémoire, ou si une branche de code est en cours d’exécution.
Si vous avez un fichier ouvert dans l’éditeur de code, vous pouvez définir un point d’arrêt en cliquant dans la marge à gauche d’une ligne de code.
Appuyez sur F5 (Déboguer > Démarrer le débogage) ou le bouton Démarrer le débogage dans la barre d'outils de débogage, et le débogueur s’exécute jusqu’au premier point d’arrêt qu’il rencontre. Si l’application n’est pas encore en cours d’exécution, F5 démarre le débogueur et s’arrête au premier point d’arrêt.
Parcourir le code dans le débogueur avec les commandes d’exécution pas à pas
Nous fournissons les raccourcis clavier pour la plupart des commandes, car ils facilitent la navigation du code de votre application. (Les commandes équivalentes telles que les commandes de menu sont affichées entre parenthèses.) Pour plus d’informations sur l’utilisation des commandes d’étape, consultez Naviguer le code dans le débogueur.
Pour démarrer votre application avec le débogueur attaché, appuyez sur F11 (Déboguer > Entrer dans). F11 est la commande Pas à pas détaillé : elle fait avancer l’exécution de l’application une instruction à la fois. Lorsque vous démarrez l’application avec F11, le débogueur s’arrête sur la première instruction qui est exécutée.
La flèche jaune représente l’instruction sur laquelle le débogueur s'est arrêté, ce qui suspend également l’exécution de l’application au même point. Cette instruction n’a pas encore été exécutée.
F11 est un bon moyen d’examiner le flux d’exécution en détail. (Pour parcourir plus rapidement le code, nous vous montrons également d’autres options.) Par défaut, le débogueur ignore le code non-utilisateur (si vous souhaitez plus de détails, consultez Simplement mon code).
Remarque
Dans le code managé, vous verrez une boîte de dialogue vous demandant si vous souhaitez être averti lorsque vous effectuez automatiquement un pas à pas sur les propriétés et les opérateurs (comportement par défaut). Si vous voulez changer ce paramètre ultérieurement, désactivez le paramètre Pas à pas principal dans les propriétés et les opérateurs dans le menu Outils > Options sous Débogage.
Effectuer un pas à pas principal dans le code pour ignorer les fonctions
Lorsque vous êtes sur une ligne de code qui est un appel de fonction ou de méthode, vous pouvez appuyer sur F10 (Débogage > Passer par-dessus) au lieu de F11.
F10 avance le débogueur sans passer aux fonctions ou méthodes de votre code d’application (le code s’exécute toujours). En appuyant sur F10, vous pouvez ignorer le code qui ne vous intéresse pas. De cette façon, vous pouvez rapidement accéder au code qui vous intéresse davantage. Pour plus d’informations sur l’utilisation des commandes d’étape, consultez Naviguer dans le code dans le débogueur.
Atteindre rapidement un point dans votre code à l’aide de la souris
L’utilisation du bouton Exécuter pour cliquer sur est similaire à la définition d’un point d’arrêt temporaire. Cette commande est également pratique pour vous déplacer rapidement dans une région visible du code de l’application. Vous pouvez utiliser Exécuter pour cliquer sur dans n’importe quel fichier ouvert. Pour plus d’informations sur cette fonctionnalité et des fonctionnalités de navigation similaires, consultez Exécuter vers un emplacement spécifique dans votre code.
Dans le débogueur, pointez sur une ligne de code jusqu’à ce que le bouton Exécuter pour cliquer sur (Exécuter l’exécution ici) apparaît à gauche.
Remarque
Le bouton Exécuter jusqu’au clic (Exécuter l’exécution jusqu’ici) est disponible à partir de Visual Studio 2017.
Cliquez sur le bouton Exécuter jusqu’au clic (Exécuter l’exécution jusqu’ici). Le débogueur avance jusqu’à la ligne de code où vous avez cliqué.
Faire avancer le débogueur hors de la fonction actuelle
Parfois, vous voulez continuer votre session de débogage, mais faire avancer le débogueur en dehors de la fonction active.
Appuyez sur Maj + F11 (ou Déboguer > Pas à pas sortant).
Cette commande reprend l’exécution de l’application (et fait avancer le débogueur) jusqu’au retour de la fonction active.
Exécuter jusqu'au curseur
Lorsque vous modifiez du code (plutôt que de faire une pause dans le débogueur), faites un clic droit sur une ligne de code dans votre application et choisissez Exécuter jusqu'au curseur (ou appuyez sur Ctrl + F10). Cette commande démarre le débogage et définit un point d’arrêt temporaire sur la ligne de code actuelle. Pour plus d’informations sur cette fonctionnalité et des fonctionnalités de navigation similaires, consultez Exécuter vers un emplacement spécifique dans votre code.
Si vous avez défini des points d’arrêt, le débogueur s’interrompt sur le premier point d’arrêt qu’il atteint.
Appuyez sur F5 jusqu’à atteindre la ligne de code où vous avez sélectionné Exécuter jusqu’au curseur.
Cette commande est utile lorsque vous modifiez du code et que vous souhaitez définir rapidement un point d’arrêt temporaire et démarrer le débogueur en même temps.
Remarque
Vous pouvez utiliser Exécuter jusqu’au curseur dans la fenêtre Pile des appels pendant que vous déboguez.
Redémarrer rapidement votre application
Cliquez sur le bouton Redémarrer l’application dans la barre d’outils Débogage (ou appuyez sur Ctrl + Maj + F5).
Lorsque vous appuyez sur Redémarrer, cela permet de gagner du temps par rapport à l’arrêt de l’application et de redémarrer le débogueur. Le débogueur s’interrompt au premier point d’arrêt atteint en exécutant du code.
Si vous souhaitez arrêter le débogage et revenir dans l’éditeur de code, vous pouvez appuyer sur le bouton d'arrêt rouge au lieu de Redémarrer.
Modification du code en direct
Visual Studio 2022 prend en charge la modification de code en direct lors du débogage. Pour plus d’informations, consultez :
Modifiez votre code et poursuivez le débogage (C#, VB, C++, XAML)
Dans la plupart des langages pris en charge par Visual Studio, vous pouvez modifier votre code au milieu d’une session de débogage et continuer le débogage. Pour utiliser cette fonctionnalité, cliquez sur votre code avec votre curseur lors d’une pause dans le débogueur, apportez des modifications, puis appuyez sur F5, F10ou F11 pour continuer le débogage. Pour plus d’informations sur l’utilisation de cette fonctionnalité et sur les limitations des fonctionnalités, consultez Modifier et continuer.
Pour modifier le code XAML pendant une session de débogage, consultez Écriture et débogage de code XAML en cours d’exécution avec des Rechargement à chaud XAML.
Inspecter des variables avec des bulles d’informations (datatips)
Maintenant que vous vous débrouillez un peu, vous pouvez commencer à examiner l’état de votre application (ses variables) avec le débogueur. Les fonctionnalités qui vous permettent d’inspecter les variables sont certaines des fonctionnalités les plus utiles du débogueur, et il existe différentes façons de le faire. Souvent, lorsque vous essayez de déboguer un problème, vous essayez de déterminer si les variables stockent les valeurs que vous attendez qu’elles aient dans un état d’application particulier. Pour plus d’informations sur l’utilisation des conseils sur les données, consultez Afficher les valeurs de données dans les conseils sur les données.
Lors de la pause dans le débogueur, pointez sur un objet avec la souris et vous voyez sa valeur, ou sa valeur de propriété par défaut.
Si la variable a des propriétés, vous pouvez développer l’objet pour afficher toutes ses propriétés.
Souvent, lors du débogage, vous voulez un moyen rapide de vérifier les valeurs des propriétés sur des objets : les datatips sont un bon moyen de le faire.
Inspecter des variables avec les fenêtres Autos et Locals
Dans la fenêtre Autos, vous voyez des variables avec leur valeur actuelle et leur type. La fenêtre Autos affiche toutes les variables utilisées sur la ligne active ou la ligne précédente (en C++, la fenêtre affiche des variables dans les trois lignes de code précédentes. Consultez la documentation pour connaître le comportement spécifique au langage). Pour plus d’informations sur l’utilisation de ces fenêtres, consultez Inspecter les variables dans les fenêtres Autos et Locals.
Pendant le débogage, examinez la fenêtre Automatique en bas de l’éditeur de code.
Remarque
En JavaScript, la fenêtre Locals est prise en charge, mais pas la fenêtre Autos.
Ensuite, examinez la fenêtre Variables locales. La fenêtre Variables locales vous montre les variables qui se trouvent actuellement dans l’étendue.
Dans cet exemple, l'objet this
et l'objet f
sont dans le champ de visibilité. Pour plus d’informations, consultez Inspecter les variables dans les fenêtres Automatique et Variables locales.
Afficher les valeurs de retour des appels de méthode
Dans le code .NET et C++, vous pouvez examiner les valeurs de retour dans la fenêtre Autos lorsque vous effectuez un pas au-dessus ou sortez d'un appel de méthode, ce qui peut être utile lorsque la valeur de retour n'est pas stockée dans une variable locale. Pour plus d’informations, consultez Afficher les valeurs de retour des appels de méthode.
À compter de Visual Studio 2022 version 17.12 Preview 3, vous pouvez également afficher les valeurs de retour des appels de méthode inline et pas seulement dans la fenêtre Autos.
Définir un espion
Vous pouvez utiliser une fenêtre Watch pour spécifier une variable (ou une expression) à surveiller. Pour plus d’informations, consultez Définir une montre à l’aide des fenêtres Espion et QuickWatch.
Pendant le débogage, cliquez avec le bouton droit sur un objet et choisissez Ajouter un espion.
Dans cet exemple, vous avez un espion défini sur l’objet et vous pouvez voir sa valeur changer au fil de votre déplacement dans le débogueur. Contrairement aux autres fenêtres de variables, les fenêtres Observation affichent toujours les variables que vous surveillez (elles sont grisées lorsqu'elles sont hors portée).
Examiner la pile des appels
La fenêtre pile des appels affiche l’ordre dans lequel les méthodes et les fonctions sont appelées. La ligne supérieure affiche la fonction actuelle. La deuxième ligne montre la fonction ou la propriété à partir de laquelle elle a été appelée, et ainsi de suite. La pile des appels est un bon moyen d’examiner et de comprendre le flux d’exécution d’une application. Pour plus d’informations, consultez Guide pratique pour examiner la pile des appels.
Remarque
La fenêtre Pile des appels est similaire à la perspective Débogage dans certains IDE, comme Eclipse.
Pendant que vous déboguez, cliquez sur la fenêtre Pile des appels, qui est ouverte par défaut dans le volet inférieur droit.
Vous pouvez double-cliquer sur une ligne de code pour examiner ce code source et modifier également l’étendue actuelle inspectée par le débogueur. Ceci ne fait pas avancer le débogueur.
Vous pouvez également utiliser les menus contextuels de la fenêtre Pile des appels pour faire d’autres choses. Par exemple, vous pouvez insérer des points d’arrêt dans des fonctions spécifiques, redémarrer votre application à l’aide de Run to Cursorpour examiner le code source.
Inspecter une exception
Lorsque votre application lève une exception, le débogueur vous amène à la ligne de code qui a levé l’exception. Pour plus d’informations, consultez Inspectez une exception en utilisant l'Aide d'Exception.
d’assistance d’exceptionException Helper
Dans cet exemple, l’assistance d’exception affiche une exception System.NullReferenceException
et un message d’erreur indiquant que la référence d’objet n’est pas définie sur une instance de l’objet. Et, il nous indique que la valeur de chaîne était null lorsque vous avez essayé d’appeler la méthode Trim
.
Dans cet exemple, l’Assistance sur l’exception vous montre une exception System.Argument
et un message d’erreur indiquant que le chemin n’est pas d’une forme autorisée. Nous savons donc que l’erreur s’est produite sur une méthode ou un argument de fonction.
Dans cet exemple, l’appel DirectoryInfo
a causé une erreur sur la chaîne vide stockée dans la variable value
.
L’assistance sur les exceptions est une fonctionnalité intéressante qui peut vous aider à déboguer des erreurs. Vous pouvez également effectuer des opérations telles que afficher les détails de l’erreur et ajouter une montre à partir de l’Assistance d’exception. Ou bien, si nécessaire, vous pouvez changer les conditions de déclenchement de l’exception en question. Pour plus d’informations sur la gestion des exceptions dans votre code, consultez techniques et outils de débogage.
Développez le nœud Paramètres d’exception pour voir plus d’options sur la façon de gérer ce type d’exception ; dans le cadre de cette visite guidée, vous ne devez néanmoins rien changer !
Conseil
Si vous avez Copilot, vous pouvez obtenir une assistance de l'intelligence artificielle pendant le débogage des exceptions. Recherchez simplement le bouton Demander à Copilot. Pour plus d’informations, consultez Déboguer avec Copilot.
Obtenir de l’aide sur l’IA
Si vous avez Copilot, vous pouvez obtenir une assistance par IA pendant votre débogage. Pour plus d’informations, consultez Déboguer avec Copilot. Lors du débogage, vous pouvez également rechercher le bouton Demander à Copilot. Dans ces scénarios, Copilot connaît déjà le contexte de vos questions. Vous n’avez donc pas besoin de fournir le contexte vous-même dans la conversation Copilot.
Configurer le débogage
Vous pouvez configurer votre projet pour qu’il soit généré en tant que configuration de débogage ou de mise en production, configurer les propriétés du projet pour le débogage ou configurer paramètres généraux pour le débogage. En outre, vous pouvez configurer le débogueur pour afficher des informations personnalisées à l’aide de fonctionnalités telles que Attribut DebuggerDisplay ou, pour C/C++, l’infrastructure NatVis .
Les propriétés de débogage sont spécifiques à chaque type de projet. Par exemple, vous pouvez spécifier un argument à passer à l’application lorsque vous la démarrez. Vous pouvez accéder aux propriétés propres au projet en cliquant avec le bouton droit sur le projet dans l’Explorateur de solutions et en sélectionnant Propriétés. Les propriétés de débogage apparaissent généralement sous l’onglet Build ou Debug, en fonction du type de projet particulier.
À compter de Visual Studio 2022, l’onglet Débogage pour les projets .NET fournit un lien vers l’interface utilisateur des profils de lancement de débogage, où vous pouvez définir des propriétés liées au débogage.
propriétés du projet
Déboguer des applications ASP.NET en direct dans Azure App Service
Pour déboguer dans Azure App Service, consultez Déboguer des applications Azure.
Pour Visual Studio Enterprise (uniquement), le débogueur de capture instantanée prend un instantané de vos applications en production lorsque le code qui vous intéresse s’exécute. Pour indiquer au débogueur de prendre un instantané, vous définissez des points d’ancrage et des points de journal dans votre code. Le débogueur vous permet de voir exactement ce qui s’est passé, sans avoir d’impact sur le trafic de votre application de production. Snapshot Debugger peut vous aider à résoudre beaucoup plus vite les problèmes rencontrés dans les environnements de production.
La collecte de captures instantanées est disponible pour les applications ASP.NET qui s’exécutent dans Azure App Service. ASP.NET applications doivent s’exécuter sur .NET Framework 4.6.1 ou version ultérieure, et les applications ASP.NET Core doivent s’exécuter sur .NET Core 2.0 ou version ultérieure sur Windows.
Pour plus d’informations, consultez Déboguer les applications ASP.NET en direct à l'aide du Snapshot Debugger.
Examiner des captures instantanées avec le retour en arrière IntelliTrace (Visual Studio Enterprise)
Le retour en arrière IntelliTrace crée automatiquement une capture instantanée de votre application à chaque événement de point d’arrêt et d’étape du débogueur. Les instantanés enregistrés vous permettent de revenir aux points d’arrêt ou étapes précédents et d’afficher l’état de l’application tel qu’il était dans le passé. La fonctionnalité IntelliTrace de retour en arrière peut vous faire gagner du temps lorsque vous souhaitez voir l'état précédent de l'application sans avoir à redémarrer le débogage ou recréer l'état souhaité de l'application.
Vous pouvez parcourir et afficher les captures instantanées à l’aide des boutons Étape précédente et Étape suivante situés dans la barre d’outils de débogage. Ces boutons parcourent les événements qui s’affichent sous l’onglet Événements dans la fenêtre Outils de diagnostic.
Pour plus d’informations, consultez la page Inspecter les états antérieurs de l’application avec IntelliTrace.
Déboguer les problèmes de performance
Si votre application s’exécute trop lentement ou utilise trop de mémoire, vous devrez peut-être tester votre application avec les outils de profilage au début. Pour plus d’informations sur les outils de profilage tels que l’outil Utilisation du processeur et l’analyseur de mémoire, consultez Premier aperçu des outils de profilage.
Contenu connexe
Dans ce tutoriel, vous avez examiné rapidement de nombreuses fonctionnalités du débogueur. Vous souhaiterez peut-être examiner plus en détail l’une de ces fonctionnalités, telles que les points d’arrêt.