Résoudre les points d’arrêt dans le débogueur Visual StudioTroubleshoot Breakpoints in the Visual Studio Debugger

Avertissements de point d’arrêtBreakpoint Warnings

Lors du débogage, un point d’arrêt a deux états visuels possible : un cercle rouge uni et des creux (blanc remplie) cercle.When debugging, a breakpoint has two possible visual states: a solid red circle and a hollow (white filled) circle. Si le débogueur ne peut correctement définir un point d’arrêt dans le processus cible, il reste un cercle rouge uni.If the debugger is able to successfully set a breakpoint in the target process, it will stay a solid red circle. Si le point d’arrêt est un cercle vide, soit le point d’arrêt est désactivé ou avertissement s’est produite lors de la tentative de définir le point d’arrêt.If the breakpoint is a hollow circle, either the breakpoint is disabled or warning occurred when trying to set the breakpoint. Pour déterminer la différence, pointez sur le point d’arrêt et s’il existe un avertissement.To determine the difference, hover over the breakpoint and see if there is a warning.

Les deux sections suivantes décrivent des avertissements importants et comment les résoudre.The following two sections describe prominent warnings and how to fix them.

« Aucun symbole n’ont été chargés pour ce document »"No Symbols have been loaded for this document"

Accédez à la Modules fenêtre (déboguer > Windows > Modules) et vérifiez si votre module est chargé.Go to the Modules window (Debug > Windows > Modules) and check whether your module is loaded.

  • Si votre module est chargé, vérifiez le état du symbole colonne pour voir si des symboles ont été chargés.If your module is loaded, check the Symbol Status column to see whether symbols have been loaded.

    • Si les symboles ne sont pas chargés, vérifiez l’état du symbole pour diagnostiquer le problème.If symbols are not loaded, check the symbol status to diagnose the issue. Dans le menu contextuel sur un module dans le Modules fenêtre, cliquez sur informations de chargement des symboles... pour voir où le débogueur effectue la recherche et essayez de charger les symboles.From the context menu on a module in the Modules window, click Symbol Load Information... to see where the debugger looked to try and load symbols. Pour plus d’informations sur le chargement de symboles, consultez spécifier de symboles (.pdb) et les fichiers sources.For more information about loading symbols, see Specify Symbol (.pdb) and Source Files.
    • Si les symboles sont chargés, cela signifie que le fichier PDB ne contient pas d’informations sur vos fichiers sources.If symbols are loaded, this means that the PDB does not contain information about your source files. Voici quelques causes possibles :These are a few possible causes:
      • Si vos fichiers sources ont été ajoutés récemment, vérifiez qu’une version à jour du module est chargée.If your source files were recently added, confirm that an up-to-date version of the module is being loaded.
      • Il est possible de créer des fichiers PDF supprimés à l’aide de la /PDBSTRIPPED option de l’éditeur de liens.It is possible to create stripped PDBs using the /PDBSTRIPPED linker option. Fichiers PDF supprimés ne contiennent pas les informations du fichier source.Stripped PDBs do not contain source file information. Confirmez que vous utilisez intégral PDB et pas un fichier PDB supprimé.Confirm you are working with a full PDB and not a stripped PDB.
      • Le fichier PDB est partiellement endommagé.The PDB file is partially corrupted. Essayez de supprimer le fichier et effectuer un nettoyage de build du module pour vérifier si cela résout le problème.Try deleting the file and performing a clean build of the module to see if this resolves the issue.
  • Si votre module n’est pas chargé, vérifiez la commande suivante pour rechercher la cause :If your module is not loaded, check the following to find the cause:

    • Vérifiez que vous déboguez le processus adéquat.Confirm that you are debugging the right process.
    • Vérifiez que vous déboguez le bon type de code.Check to see that you are debugging the right kind of code. Vous pouvez déterminer le type de code, le débogueur est configuré pour déboguer dans le processus fenêtre (déboguer > Windows > Processus).You can find out what type of code the debugger is configured to debug in the Processes window (Debug > Windows > Processes). Par exemple, si vous essayez de déboguer du code c#, vérifiez que le débogueur est configuré pour le type approprié de .NET Framework (gérés, par exemple, (v4*) ou managé (v2*/v3*) ou managé (CoreCLR)).For example, if you are trying to debug C# code, confirm that your debugger is configured for the appropriate type of .NET Framework (for example, Managed (v4*) versus Managed (v2*/v3*) versus Managed (CoreCLR)).

"…"… le code source actuel est différent de la version intégrée... »the current source code is different from the version built into..."

Si un fichier source a été modifié et que la source ne correspond plus au code que vous déboguez, le débogueur ne définit pas les points d’arrêt dans le code par défaut.If a source file has changed and the source no longer matches the code you are debugging, the debugger will not set breakpoints in the code by default. En règle générale, ce problème se produit lorsqu’un fichier source est modifié, mais le code source n’a pas été reconstruit.Normally, this problem happens when a source file is changed, but the source code wasn’t rebuilt. Pour résoudre ce problème, régénérez le projet.To fix this issue, rebuild the project. Si le système de génération pense que le projet est déjà à jour même si elle n’est pas, vous pouvez forcer le système de projet à reconstruire en enregistrer de nouveau le fichier source ou par un nettoyage du projet sortie avant la génération de la génération.If the build system thinks the project is already up to date even though it isn’t, you can force the project system to rebuild either by saving the source file again or by cleaning the project’s build output before building.

Dans de rares scénarios, vous souhaiterez déboguer sans code source correspondant.In rare scenarios, you may want to debug without having matching source code. Cela peut conduire à une expérience de débogage très déroutant, assurez-vous qu’il s’agit comment vous souhaitez continuer.This can lead to a very confusing debugging experience, so make sure that this is how you want to proceed.

Pour désactiver ces vérifications de sécurité, effectuez l’une des opérations suivantes :To disable these safety checks, do one of the following:

  • Pour modifier un point d’arrêt, placez le curseur sur l’icône de point d’arrêt dans l’éditeur, puis cliquez sur l’icône Paramètres (engrenage).To modify a single breakpoint, hover over the breakpoint icon in the editor and click the settings (gear) icon. Une fenêtre d’aperçu est ajoutée à l’éditeur.A peek window is added to the editor. En haut de la fenêtre d’aperçu, il existe un lien hypertexte qui indique l’emplacement du point d’arrêt.At the top of the peek window there is a hyperlink that indicates the location of the breakpoint. Cliquez sur le lien hypertexte pour autoriser la modification de l’emplacement du point d’arrêt et vérifier permettre que le code source soit différent de l’original.Click the hyperlink to allow modification of the breakpoint location and check Allow the source code to be different from the original.
  • Pour modifier ce paramètre pour les points d’arrêt, accédez à déboguer > Options et paramètres.To modify this setting for all breakpoints, go to Debug > Options and Settings. Dans la page Débogage/Général , désactivez l’option Les fichiers sources doivent correspondre exactement à la version d’origine .On the Debugging/General page, clear the Require source files that exactly match the original version option. Veillez à réactiver cette option lorsque vous avez terminé le débogage.Make sure to reenable this option when you are finished debugging.

Le point d’arrêt a été correctement définie (aucun avertissement), mais n’a pas été atteintThe breakpoint was successfully set (no warning), but didn’t hit

Cette section fournit des informations pour résoudre les problèmes lorsque le débogueur n’affiche pas les avertissements : le point d’arrêt est un cercle rouge uni pendant le débogage activement, mais le point d’arrêt n’est pas en cours d’accès.This section provides information to troubleshoot issues when the debugger isn’t displaying any warnings – the breakpoint is a solid red circle while actively debugging, yet the breakpoint isn’t being hit.

Voici quelques points à vérifier :Here are a few things to check:

  1. Si votre code s’exécute dans un processus plus d’un ou plusieurs ordinateurs, assurez-vous que vous déboguez le processus adéquat ou l’ordinateur.If your code runs in more than one process or more than one computer, make sure that you are debugging the right process or computer.
  2. Assurez-vous que votre code s’exécute.Confirm that your code is running. Un moyen facile de ce test consiste à ajouter un appel à System.Diagnostics.Debugger.Break (C# /Visual Basic) ou __debugbreak (C++) à la ligne de code où vous essayez de définir le point d’arrêt et puis régénérez votre projet.One easy way to test this is to add a call to System.Diagnostics.Debugger.Break (C#/VB) or __debugbreak (C++) to the line of code where you are trying to set the breakpoint and then rebuild your project.
  3. Si vous déboguez du code optimisé, assurez-vous que la fonction où votre point d’arrêt est défini n’est pas en cours inline dans une autre fonction.If you are debugging optimized code, make sure the function where your breakpoint is set isn’t being inlined into another function. Le Debugger.Break test décrit dans la vérification de la précédente peut utiliser pour ce test ainsi.The Debugger.Break test described in the previous check can work to test this as well.

J’ai supprimé un point d’arrêt, mais je continue de l’atteindre quand je relance le débogageI deleted a breakpoint, but I continue to hit it when I start debugging again

Si vous avez supprimé un point d’arrêt pendant le débogage, vous pouvez atteindre le point d’arrêt de la prochaine fois que vous démarrez le débogage.If you deleted a breakpoint while debugging, you may hit the breakpoint again the next time you start debugging. 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 .To stop hitting this breakpoint, make sure all the instances of the breakpoint are removed from the Breakpoints window.