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.
  • Cercle creux (blanc rempli), le point d’arrêt est désactivé ou un avertissement s’est 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 à la fenêtre Modules (Déboguer>les modulesWindows>) lors du débogage et case activée si votre module est chargé.

  • Si votre module est chargé, case activée la colonne État du symbole pour voir si des symboles ont été chargés.
    • Si les symboles ne sont pas chargés, case activée le symbole status pour diagnostiquer le problème. Dans le menu contextuel d’un module de la fenêtre Modules , sélectionnez Informations sur le chargement des symboles ... pour voir où le débogueur a regardé pour essayer de charger des symboles. Pour plus d’informations sur le chargement des symboles, consultez Spécifier un symbole (.pdb) et Fichiers sources.
    • Si des 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 supprimés à l’aide de l’option de l’éditeur de liens /PDBSTRIPPED . Les PDB dépouillés ne contiennent pas d’informations sur le fichier source. Vérifiez que vous travaillez avec une base de données PDB complète et non une PDB dépouillé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é, case activée les éléments suivants pour trouver la cause :
    • Vérifiez que vous déboguez le processus approprié.
    • Vérifiez que vous déboguez le code approprié. Vous trouverez le type de code que le débogueur est configuré pour déboguer dans la fenêtre Processus (Déboguer> lesprocessusWindows>). 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, Managed (v4*) versus Managed (v2*/v3*) versus Managed (CoreCLR)).

"… le code source actuel est différent de la version intégrée à... »

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é reconstruit. 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 reconstruction 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 correspondance du code source peut entraîner une expérience de débogage déroutante. Assurez-vous donc de continuer.

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 case activée Autoriser le code source à être différent du code d’origine.
  • Pour modifier ce paramètre pour tous les points d’arrêt, accédez àOptions et paramètres de débogage>. Dans la page Débogage/Général , désactivez l’option Exiger des fichiers sources qui correspondent 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 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 éléments à case activée :

  1. Si votre code s’exécute sur plusieurs processus ou plusieurs ordinateurs, vérifiez que vous déboguez le processus ou l’ordinateur approprié.
  2. Vérifiez que votre code est en cours d’exécution. Pour tester 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 Debugger.Break test décrit dans la case activée précédente peut également fonctionner pour tester ce problème.
  4. Pour les scénarios d’attachement au processus , vérifiez que vous déboguez le type de code approprié (par exemple, code de script ou .NET Framework ou .NET 5+). Pour examiner, case activée 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 à l’atteindre quand je recommencez le débogage

Si vous avez supprimé un point d’arrêt pendant le débogage, vous pouvez atteindre le point d’arrêt à nouveau la prochaine fois que vous commencerez le débogage. Pour arrêter 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.