Découvrez des conseils et des 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 obtenir un aperçu des fonctionnalités de base du débogueur, consultez Présentation du 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 du code, consultez la section Débogage dans Raccourcis clavier.

Épingler des datatips

Si vous survolez fréquemment des datatips pendant le débogage, vous pouvez épingler le datatip pour la variable afin de bénéficier d’un accès rapide. La variable reste épinglée même après le redémarrage. Pour épingler le datatip, cliquez sur l’icône d’épingle tout en pointant dessus. Vous pouvez épingler plusieurs variables.

Épingler un datatip

Vous pouvez également personnaliser des datatips de plusieurs autres façons, par exemple en conservant un datatip développé (datatip permanent) ou en rendant un datatip transparent. Pour plus d’informations, consultez Afficher les valeurs de données dans les datatips dans l’éditeur de code.

Modifier votre code et poursuivre 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 lorsque vous êtes en pause dans le débogueur, apportez des modifications, puis appuyez sur F5, F10 ou 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 poursuivre le débogage

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.

Déboguer des problèmes difficiles à reproduire

S’il est difficile ou chronophage de recréer un état particulier de votre application, vous pouvez utiliser un point d’arrêt conditionnel. Vous pouvez utiliser des points d’arrêt conditionnels et filtrer les points d’arrêt pour éviter toute rupture 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). Les conditions sont définies à l’aide d’expressions, de filtres, d’un nombre d’accès, etc.

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

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

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

    Point d’arrêt conditionnel

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

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 des visualisations Natvis.

Attacher à la même application de manière répétée

Lorsque vous utilisez la fonctionnalité Attacher au processus, vous pouvez rapidement vous rattacher à un processus auquel vous étiez précédemment attaché en choisissant Déboguer>Rattacher au processus (Maj+Alt+P). Quand vous choisissez cette commande, le débogueur essaie immédiatement d’attacher le débogueur aux derniers processus auxquels il était attaché, en essayant d’abord de faire correspondre l’ID de processus précédent et, si cela échoue, en faisant correspondre le 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 pour vous permettre de sélectionner le processus approprié.

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

Il est facile d’afficher les variables à l’aide des fenêtres de débogueur comme la fenêtre Espion. Toutefois, quand une variable sort de l’étendue dans la fenêtre Espion, vous remarquez qu’elle est grisée. Dans certains scénarios d’application, la valeur d’une variable peut changer même lorsque la variable est hors étendue et vous voulez la surveiller de près (par exemple, une variable peut être récupérée par le garbage collector). Vous pouvez suivre la variable en créant un ID d’objet pour celle-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-vous au point d’arrêt.

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

    Créer un ID d’objet

  4. Le symbole $ et un nombre s’affichent alors 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 un espion.

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 s’affichent 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 une fois sur F10 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-la en utilisant Déboguer > Fenêtres > Exécution.)

Fenêtre Exécution

Vous pouvez également utiliser des pseudo-variables dans la fenêtre Espion et dans la fenêtre Exécution, telles que $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 une chaîne de texte brut, XML, HTML ou JSON, cliquez sur l’icône en forme de loupe VisualizerIcon tout en pointant sur une variable contenant une valeur de chaîne.

Ouvrir un visualiseur de chaîne

Un visualiseur de chaîne peut vous aider à déterminer si une chaîne est incorrecte, selon le 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 Boîte de dialogue Visualiseur de chaîne.

Visualiseur de chaîne JSON

Pour quelques autres types tels que les objets DataSet et DataTable qui s’affichent 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’utilisation de la mémoire. Pour plus d’informations, consultez Choisir un outil d’analyse de la mémoire.

Créer un fichier dump

Un fichier d’image mémoire est un instantané qui montre le processus en cours d’exécution et les modules qui ont été chargés pour une application à un moment donné. Une image mémoire avec des informations de tas comprend également un instantané de la mémoire de l’application à ce stade. Les images mémoire sont principalement utilisées pour déboguer les problèmes des machines auxquelles les développeurs n’ont pas accès.

Si vous devez enregistrer un fichier de vidage, sélectionnez Déboguer > Enregistrer le vidage sous.

Pour analyser un fichier de vidage, choisissez Fichier > Ouvrir dans Visual Studio. Pour démarrer le débogage avec le fichier de vidage, sélectionnez Déboguer avec Managé uniquement, Déboguer avec Natif uniquement, Déboguer avec Mixte ou Déboguer avec Mémoire managée.

Pour plus d’informations, consultez Fichiers de vidage.

S’arrêter dans le code sur les exceptions gérées

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

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

Boîte de dialogue Paramètres d’exception

Changer 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 sous forme de flèche jaune vers un autre point dans le chemin d’exécution du code. Ensuite, vous utilisez F5 ou une commande étape pour continuer à exécuter l’application.

Déplacer le pointeur d’exécution

En changeant le flux d’exécution, vous pouvez effectuer des opérations comme tester d’autres chemins d’exécution du code ou réexécuter du code sans devoir redémarrer le débogueur. Pour plus d’informations, consultez Déplacer le pointeur d’exécution.

Avertissement

Vous devez rester prudent avec cette fonctionnalité, vous pouvez voir un avertissement dans l’info-bulle. Vous pouvez aussi en voir d’autres. Le fait de déplacer le pointeur ne peut pas rétablir votre application à un état antérieur.

Déboguer les interblocages et les conditions de concurrence

Si vous devez déboguer les types de problèmes communs aux applications multithread, 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. Pendant le débogage, cliquez sur le bouton Afficher les threads dans la sourceAfficher les threads dans la source dans la barre d’outils Déboguer.

  2. Examinez la reliure située sur le côté gauche de la fenêtre. Sur cette ligne, vous voyez une icône de marqueur de threadMarqueur de thread qui ressemble à deux threads de tissu. Le marqueur de thread indique qu'un thread est interrompu à cet emplacement.

    Notez qu’un marqueur de thread peut être partiellement masqué par un point d’arrêt.

  3. Placez le pointeur sur le marqueur de thread. Un DataTip apparaît. Le DataTip vous indique le nom et le numéro d'ID de thread de chaque thread interrompu.

    Vous pouvez également afficher l’emplacement des threads dans la fenêtre Piles parallèles.

Obtenir plus d’informations sur la façon dont le débogueur s’attache à votre application (C#, C++, Visual Basic, F#)

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

Ouvrez la fenêtre Modules pendant le débogage en sélectionnant Déboguer > Fenêtres > Modules. La fenêtre Modules peut vous indiquer quels modules le débogueur traite comme du code utilisateur, ou Mon code, et le statut de chargement du symbole pour le module. Dans la plupart des scénarios, le débogueur recherche automatiquement les fichiers de symboles pour le code utilisateur, mais si vous souhaitez effectuer un pas à pas détaillé (ou déboguer) du code .NET, du code système ou du code de bibliothèque tiers, des étapes supplémentaires sont nécessaires pour obtenir les fichiers de symboles appropriés.

Afficher les informations sur le symbole dans la fenêtre Modules

Vous pouvez charger les informations sur le symbole directement à partir de la fenêtre Modules en cliquant avec le bouton droit et en choisissant Charger les 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 de pouvoir déboguer une version publiée ultérieurement.

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

En savoir plus

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

Raccourcis clavier