Résoudre les problèmes de points d’arrêt dans le débogueur Visual Studio

S’applique à : Visual Studio

Avertissements de point d’arrêt

Lors du débogage, un point d’arrêt a deux états visuels possibles :

  • Cercle rouge plein, si le débogueur a correctement défini un point d’arrêt dans le processus cible.
  • Un cercle creux (gris foncé ou blanc rempli, selon votre thème), si le point d’arrêt est désactivé ou qu’un avertissement se produit lors de la tentative de définition du point d’arrêt.

Pour déterminer la différence, pointez sur le point d’arrêt et voyez s’il y a un avertissement. Les deux sections suivantes décrivent les avertissements importants et la façon de les corriger.

« Aucun symbole n’a été chargé pour ce document »

Accédez au débogage>des modules Windows>lors du débogage et vérifiez si votre module est chargé.

  • Si votre module est chargé, vérifiez la colonne État du symbole pour voir si des symboles ont été chargés.
    • Si les symboles ne sont pas chargés, vérifiez l’état du symbole pour diagnostiquer le problème :

      Dans la fenêtre Modules , cliquez avec le bouton droit sur le module pour lequel les symboles n’ont pas chargé et sélectionnez Informations de chargement de symboles....

      Capture d’écran des informations de chargement de symboles dans la fenêtre Modules.

      Pour plus d’informations sur le chargement de symboles, consultez Spécifier les fichiers de symboles (.pdb) et les fichiers sources.

    • Si les symboles sont chargés, la base de données PDB ne contient pas d’informations sur vos fichiers sources. Voici quelques causes possibles :

      • Si vos fichiers sources ont été récemment ajoutés, vérifiez qu’une version à jour du module est en cours de chargement.
      • Il est possible de créer des PDB dépouillés à l’aide de l’option d’éditeur de liens /PDBSTRIPPED. Les fichiers PDB supprimés ne contiennent pas d’informations sur le fichier source. Vérifiez que vous utilisez une base de données PDB complète et non une base de données PDB élaguée.
      • Le fichier PDB est partiellement endommagé. Supprimez le fichier et exécutez une build propre du module pour essayer de résoudre le problème.
  • Si votre module n’est pas chargé, vérifiez ce qui suit pour trouver la cause :
    • Vérifiez que vous déboguez le processus approprié.
    • Vérifiez que vous déboguez le code approprié. Vous pouvez déterminer le type de code pour lequel le débogueur est configuré pour déboguer dans la fenêtre Processus (Débogage>Fenêtres>Processus). Par exemple, si vous essayez de déboguer du code C#, vérifiez que votre débogueur est configuré pour le type et la version appropriés de .NET (par exemple, Managé (v4*) par rapport à Managé (v2*/v3*) et Managé (CoreCLR)).

"… le code source actuel est différent de la version générée dans... »

Si un fichier source a changé et que la source ne correspond plus au code que vous déboguez, le débogueur ne définit pas de points d’arrêt dans le code par défaut. Normalement, ce problème se produit lorsqu’un fichier source est modifié, mais que le code source n’a pas été régénéré. Pour résoudre ce problème, régénérez le projet. Si le système de génération pense que le projet est déjà à jour, même s’il ne l’est pas, vous pouvez forcer la régénération du système de projet. Régénérez le projet en enregistrant à nouveau le fichier source ou en nettoyant la sortie de build avant la génération.

Dans de rares scénarios, vous souhaiterez peut-être déboguer sans avoir de code source correspondant. Le débogage sans code source correspondant peut entraîner une expérience de débogage confuse. Assurez-vous donc de vraiment vouloir procéder ainsi.

Suivez l’une des options pour désactiver ces vérifications de sécurité :

  • Pour modifier un point d’arrêt unique, pointez sur l’icône de point d’arrêt dans l’éditeur et sélectionnez l’icône Paramètres (engrenage). Une fenêtre d’aperçu est ajoutée à l’éditeur. En haut de la fenêtre d’aperçu, un lien hypertexte indique l’emplacement du point d’arrêt. Sélectionnez le lien hypertexte pour autoriser la modification de l’emplacement du point d’arrêt et cochez Autoriser le code source à être différent de l’original.
  • Pour modifier ce paramètre pour tous les points d’arrêt, accédez à Débogage>Options et paramètres. Dans la page Débogage/Général , désactivez l’option Les fichiers sources doivent correspondre exactement à la version d’origine . Veillez à réactiver cette option lorsque vous avez terminé le débogage.

Le point d’arrêt a été correctement défini (aucun avertissement), mais n’a pas été atteint

Cette section fournit des informations pour résoudre les problèmes lorsque le débogueur n’affiche aucun avertissement : le point d’arrêt est un cercle rouge plein pendant le débogage actif, mais le point d’arrêt n’est pas atteint.

Voici quelques points à vérifier :

  1. Si votre code s’exécute dans plusieurs processus ou sur plusieurs ordinateurs, assurez-vous que vous déboguez le processus ou l’ordinateur approprié.
  2. Vérifiez que votre code est en cours d’exécution. Pour vérifier que votre code est en cours d’exécution, ajoutez un appel à System.Diagnostics.Debugger.Break (C#/VB) ou __debugbreak (C++) à la ligne de code où vous essayez de définir le point d’arrêt, puis régénérez votre projet.
  3. Si vous déboguez du code optimisé, assurez-vous que la fonction dans laquelle votre point d’arrêt est défini n’est pas insérée dans une autre fonction. Le test Debugger.Break décrit dans la vérification précédente peut également fonctionner pour tester ce problème.
  4. Pour l’attachement à des scénarios de processus , vérifiez que vous déboguez le type de code approprié (par exemple, le code de script par rapport à .NET Framework et .NET 5+). Pour enquêter, cochez l’option Attacher à dans la boîte de dialogue Attacher au processus, puis choisissez Sélectionner, si nécessaire, pour modifier le type de code.

J’ai supprimé un point d’arrêt, mais je continue de l’atteindre quand je relance le débogage

Si vous avez supprimé un point d’arrêt pendant le débogage, il est possible que vous atteigniez à nouveau le point d’arrêt au prochain lancement du débogage. Pour cesser d’atteindre ce point d’arrêt, assurez-vous que toutes les instances du point d’arrêt sont supprimées de la fenêtre Points d’arrêt .