Résoudre les problèmes de 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 plein et des creux (remplie de blanc) cercle.When debugging, a breakpoint has two possible visual states: a solid red circle and a hollow (white filled) circle. Si le débogueur est en mesure de définir correctement un point d’arrêt dans le processus cible, il reste un cercle rouge plein.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, le point d’arrêt est désactivé ou avertissement s’est produite lors de la tentative 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, placez le curseur sur le point d’arrêt et voir si un avertissement s’affiche.To determine the difference, hover over the breakpoint and see if there is a warning.

Les deux sections suivantes décrivent les 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 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 les 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 est consulté pour tenter de charger des 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 le symbole (.pdb) et les fichiers sources.For more information about loading symbols, see Specify Symbol (.pdb) and Source Files.
    • Si les symboles sont chargés, le fichier PDB ne contient pas d’informations sur vos fichiers sources.If symbols are loaded, 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ées 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. Vérifiez que vous travaillez avec un intégral PDB et pas sur 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. Supprimez le fichier et effectuer une génération complète du module pour essayer de résoudre le problème.Delete the file and perform a clean build of the module to try to resolve 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 correct.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 trouver 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 votre débogueur est configuré pour le type approprié de .NET Framework (par exemple, géré (v4*) et géré (v2*/v3*) et géré (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 en cours 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 changé 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 considère que le projet est déjà à jour même si elle n’est pas, vous pouvez forcer le système de projet de reconstruction en enregistrer de nouveau le fichier source ou en effaçant 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 rares cas, vous souhaiterez déboguer sans code source correspondant.In rare scenarios, you may want to debug without having matching source code. Débogage sans correspondance de code source peut entraîner une confusion débogage expérience, veillez donc qu’il s’agit de façon dont vous souhaitez continuer.Debugging without matching source code can lead to a 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 des 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 permettent au code source soit différent de celui d’origine.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 tous 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. N’oubliez pas de 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 d’accèsThe 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 ne s’affiche pas les avertissements : le point d’arrêt est un cercle rouge plein 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 plusieurs processus ou de plusieurs ordinateurs, assurez-vous que vous déboguez le processus correct 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. Vérifiez que votre code s’exécute.Confirm that your code is running. Pour vérifier que votre code s’exécute, ajoutez 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.To test that your code is running, 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 d’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 précédente peut travailler pour tester également ce problème.The Debugger.Break test described in the previous check can work to test this issue 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 peut-être atteint 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.