Partager via


Découvrez les conseils et astuces de productivité pour le débogueur dans Visual Studio

Lisez cette rubrique pour découvrir quelques conseils et astuces de productivité pour le débogueur Visual Studio. Pour un aperçu des fonctionnalités de base du débogueur, consultez d’abord le débogueur. Dans cette rubrique, nous abordons certains domaines qui ne sont pas inclus dans la visite guidée des fonctionnalités.

Raccourcis clavier

Pour obtenir la liste des raccourcis clavier les plus courants liés au débogage, consultez la section Débogage dans les raccourcis clavier.

Épingler les info-bulles de données

Si vous survolez fréquemment les info-bulles de données lors du débogage, vous pouvez épingler l’info-bulle de la variable afin d'y accéder rapidement. La variable reste épinglée même après le redémarrage. Pour épingler l’info-bulle de données, cliquez sur l’icône d’épingle tout en pointant dessus. Vous pouvez épingler plusieurs variables.

Épinglage d’une info-bulle de données

Vous pouvez également personnaliser les infobulles de différentes manières, par exemple en gardant une infobulle ouverte (une infobulle fixe) ou en la rendant transparente. Pour plus d’informations, consultez Afficher les valeurs de données dans DataTips dans l’éditeur de code.

Modifiez votre code et poursuivez le débogage (C#, VB, C++)

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.

Modifier et continuer le débogage

Pour plus d’informations sur l’utilisation de la fonctionnalité et sur les limitations des fonctionnalités, consultez Modifier et continuer.

Modifier le code XAML et continuer le débogage

Pour modifier du code XAML lors d'une session de débogage, consultez Écrire et déboguer le code XAML exécuté avec XAML Hot Reload.

Problèmes de débogage difficiles à reproduire

S’il est difficile ou fastidieux de recréer un état particulier dans votre application, déterminez si l’utilisation d’un point d’arrêt conditionnel peut vous aider. Vous pouvez utiliser des points d’arrêt conditionnels et filtrer des points d’arrêt pour éviter d’entrer dans le code de votre application jusqu’à ce que l’application entre dans un état souhaité (par exemple, un état dans lequel une variable stocke des données incorrectes). Vous pouvez définir des conditions à l’aide d’expressions, de filtres, de nombres d’accès, et ainsi de suite.

Pour créer un point d’arrêt conditionnel

  1. Cliquez avec le bouton droit sur une icône de point d’arrêt (la sphère rouge) et choisissez Conditions.

  2. Dans la fenêtre Paramètres du point d’arrêt , tapez une expression.

    Point d'arrêt conditionnel

  3. Si vous êtes intéressé par un autre type de condition, sélectionnez Filtrer au lieu de l’expression conditionnelle dans la boîte de dialogue Paramètres du point d’arrêt, puis suivez les conseils de filtre.

Configurer les données à afficher dans le débogueur

Pour C#, Visual Basic et C++ (code C++/CLI uniquement), vous pouvez indiquer au débogueur les informations à afficher à l’aide de l’attribut DebuggerDisplay . Pour le code C++, vous pouvez faire de même à l’aide de visualisations Natvis.

Rattacher à la même application à plusieurs reprises

Lorsque vous utilisez la fonctionnalité d’attachement au processus, vous pouvez rapidement vous rattacher à un processus auquel vous avez été précédemment attaché en choisissant Debug>Reattach to Process (Maj Alt++P). Lorsque vous choisissez cette commande, le débogueur tente immédiatement d’attacher le dernier processus auquel vous avez attaché en essayant d’abord de correspondre à l’ID de processus précédent et, en cas d’échec, en correspondant au nom du processus précédent. Si aucune correspondance n’est trouvée ou si plusieurs processus ont le même nom, la boîte de dialogue Attacher au processus s’ouvre afin de pouvoir sélectionner le processus approprié.

Suivre un objet hors portée (C#, Visual Basic)

Il est facile d’afficher des variables à l’aide de fenêtres de débogueur comme la fenêtre Espion . Toutefois, lorsqu'une variable sort de portée dans la fenêtre Watch, vous remarquerez peut-être qu'elle apparaît en grisé. Dans certains scénarios d'application, la valeur d'une variable peut changer même lorsqu'elle est hors de portée, et vous pourriez souhaiter la surveiller de près (par exemple, une variable peut être récupérée par le ramasse-miettes). Vous pouvez suivre la variable en créant un ID d’objet pour celui-ci dans la fenêtre Espion .

Pour créer un ID d’objet

  1. Définissez un point d’arrêt près d’une variable que vous souhaitez suivre.

  2. Démarrez le débogueur (F5) et arrêtez au point d’arrêt.

  3. Recherchez la variable dans la fenêtre Locals (Déboguer > les locaux Windows>), cliquez avec le bouton droit sur la variable, puis sélectionnez Créer un ID d’objet.

    Créer un ID d’objet

  4. Vous devez voir un $ plus un nombre dans la fenêtre Variables locales. Cette variable est l’ID d’objet.

  5. Cliquez avec le bouton droit sur la variable d’ID d’objet et choisissez Ajouter une montre.

Pour plus d’informations, consultez Créer un ID d’objet.

Afficher les valeurs de retour pour les fonctions

Pour afficher les valeurs de retour de vos fonctions, examinez les fonctions qui apparaissent dans la fenêtre Autos pendant que vous parcourez votre code. Pour afficher la valeur de retour d’une fonction, assurez-vous que la fonction qui vous intéresse a déjà été exécutée (appuyez sur F10 une fois si vous êtes actuellement arrêté sur l’appel de fonction). Si la fenêtre est fermée, utilisez Déboguer > Fenêtres > Autos pour ouvrir la fenêtre Autos.

Fenêtre Autos

En outre, vous pouvez entrer des fonctions dans la fenêtre Exécution pour afficher les valeurs de retour. (Ouvrez-le à l’aide de Debug > Windows > Immediate.)

Fenêtre Immédiate

Vous pouvez également utiliser des pseudovariables dans la fenêtre Surveillance et Immédiat, par exemple $ReturnValue.

Inspecter des chaînes dans un visualiseur

Lorsque vous utilisez des chaînes, il peut être utile d’afficher l’intégralité de la chaîne mise en forme. Pour afficher un texte brut, XML, HTML ou une chaîne de caractères JSON, cliquez sur l’icône Visualiseur en survolant une variable contenant une valeur de chaîne de caractères.

Ouvrir un visualiseur de chaîne

Un visualiseur de chaîne peut vous aider à déterminer si une chaîne est incorrecte, en fonction du type de chaîne. Par exemple, un champ Valeur vide indique que la chaîne n’est pas reconnue par le type de visualiseur. Pour plus d’informations, consultez la boîte de dialogue du Visualiseur de chaînes.

Visualiseur de chaîne JSON

Pour quelques autres types tels que DataSet et les objets DataTable qui apparaissent dans les fenêtres du débogueur, vous pouvez également ouvrir un visualiseur intégré.

Analyser l’utilisation de la mémoire

Vous pouvez prendre et comparer des instantanés du tas, optimiser l’utilisation de la mémoire et rechercher une fuite de mémoire à l’aide des outils d'analyse de l’utilisation de la mémoire. Pour plus d’informations, consultez Choisir un outil d’analyse de la mémoire.

Créer un fichier de vidage

Un fichier de vidage est un instantané qui montre le processus qui s’exécutait et les modules chargés pour une application à un moment donné. Un vidage de mémoire avec des informations sur le tas inclut également un instantané de la mémoire de l'application à ce moment-là. Les vidages sont principalement utilisés pour déboguer des problèmes sur des machines auxquelles les développeurs n’ont pas accès.

Si vous avez besoin d’enregistrer un fichier de vidage, sélectionnez Déboguer > Enregistrer le vidage sous.

Pour analyser un fichier de vidage, choisissez Fichier > ouvert dans Visual Studio. Pour commencer le débogage à l’aide du fichier de vidage, sélectionnez Déboguer avec Gestion Gérée Seulement, Déboguer avec Natif Seulement, Déboguer en Mode Mixte, ou Déboguer avec Mémoire Gérée.

Pour plus d’informations, consultez Fichiers de vidage.

Décomposer le code sur les exceptions gérées

Le débogueur intervient dans votre code sur des exceptions non traitées. Toutefois, les exceptions gérées (telles que les exceptions qui se produisent dans un try/catch bloc) peuvent également être une source de bogues et vous souhaiterez peut-être examiner lorsqu’elles se produisent. Vous pouvez également configurer le débogueur pour qu’il se décompose en code pour les exceptions gérées en configurant des options dans la boîte de dialogue Paramètres d’exception . Ouvrez cette boîte de dialogue en choisissant Déboguer > les paramètres d’exception Windows>.

La boîte de dialogue Paramètres d’exception vous permet d'indiquer au débogueur d'interrompre dans le code sur des exceptions spécifiques. Dans l’illustration ci-dessous, le débogueur intervient dans votre code chaque fois qu’un System.NullReferenceException se produit. Pour plus d’informations, consultez Gestion des exceptions.

Paramètres d’exception, boîte de dialogue

Modifier le flux d’exécution

En mettant le débogueur en pause sur une ligne de code, utilisez la souris pour saisir le pointeur de flèche jaune à gauche. Déplacez le pointeur de flèche jaune vers un autre point dans le chemin d’exécution du code. Ensuite, vous utilisez F5 ou une commande d’étape pour continuer à exécuter l’application.

Déplacer le pointeur d’exécution

En modifiant le flux d’exécution, vous pouvez effectuer des opérations telles que tester différents chemins d’exécution de code ou réexécuter du code sans redémarrer le débogueur. Pour plus d’informations, consultez Déplacer le pointeur d’exécution.

Avertissement

Souvent, vous devez être prudent avec cette fonctionnalité et vous voyez un avertissement dans l’info-bulle. Vous pouvez également voir d’autres avertissements. Le déplacement du pointeur ne peut pas rétablir votre application à un état d’application antérieur.

Déboguer des interblocages et des conditions de course

Si vous devez déboguer les problèmes typiques des applications multithreads, il est souvent utile d’afficher l’emplacement des threads lors du débogage. Vous pouvez le faire facilement à l’aide du bouton Afficher les threads dans la source .

Pour afficher les threads dans votre code source :

  1. Lors du débogage, cliquez sur le bouton Afficher les threads dans la sourceAfficher les threads dans la source dans la barre d’outils Débogage.

  2. Regardez la gouttière sur le côté gauche de la fenêtre. Sur cette ligne, vous voyez une icône de marqueur de filThread Marker qui ressemble à deux fils de tissu. Le marqueur de thread indique qu’un thread est arrêté à cet emplacement.

    Notez qu’un repère de fil peut être partiellement caché par un point d’arrêt.

  3. Survolez le pointeur sur le marqueur de fil. Une info-bulle de données s’affiche. L’info-bulle vous indique le nom et le numéro d’ID de thread pour chaque thread arrêté.

    Vous pouvez également afficher l’emplacement des threads dans la fenêtre Parallel Stacks.

Familiarisez-vous avec la façon dont le débogueur s’attache à votre application (C#, C++, Visual Basic, F#)

Pour joindre votre application en cours d’exécution, le débogueur charge les fichiers de symbole (.pdb) générés pour la même build de l’application que vous essayez de déboguer. Dans certains scénarios, une petite connaissance des fichiers de symboles peut être utile. Vous pouvez examiner comment Visual Studio charge des fichiers de symboles à l’aide de la fenêtre Modules .

Ouvrez la fenêtre Modules pendant le débogage en sélectionnant Déboguer > des modules Windows>. La fenêtre Modules peut vous indiquer quels modules le débogueur traite comme du code utilisateur, ou Mon code, et l’état de chargement des symboles pour le module. Dans la plupart des scénarios, le débogueur recherche automatiquement des fichiers de symboles pour le code utilisateur, mais si vous souhaitez entrer dans (ou déboguer) le code .NET, le code système ou le code de bibliothèque tiers, des étapes supplémentaires sont nécessaires pour obtenir les fichiers de symboles corrects.

Afficher les informations de symbole dans la fenêtre Modules

Vous pouvez charger des informations de symbole directement à partir de la fenêtre Modules en cliquant avec le bouton droit et en choisissant Charger des symboles.

Parfois, les développeurs d’applications expédient des applications sans les fichiers de symboles correspondants (pour réduire l’encombrement), mais conservent une copie des fichiers de symboles correspondants pour la build afin qu’ils puissent déboguer une version publiée ultérieurement.

Pour savoir comment le débogueur classifie le code en tant que code utilisateur, consultez Simplement mon code. Pour en savoir plus sur les fichiers de symboles, consultez spécifier des fichiers symboles (.pdb) et sources dans le débogueur Visual Studio.

Pour en savoir plus

Pour obtenir des conseils et astuces supplémentaires et des informations plus détaillées, consultez les billets de blog suivants :

Raccourcis clavier