Utilisez des points d’arrêt dans le débogueur Visual StudioUse breakpoints in the Visual Studio debugger

Points d’arrêt sont une des techniques de débogage plus importantes dans la boîte à outils du développeur de votre.Breakpoints are one of the most important debugging techniques in your developer's toolbox. Vous définissez des points d’arrêt là où vous souhaitez suspendre l’exécution du débogueur.You set breakpoints wherever you want to pause debugger execution. Par exemple, vous souhaitez afficher l’état des variables de code ou examiner la pile des appels à un certain point d’arrêt.For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. Si c’est la première fois que vous essayez de déboguer du code, vous pouvez lire Débogage pour grands débutants avant de poursuivre cet article.If this is the first time that you've tried to debug code, you may want to read Debugging for absolute beginners before going through this article.

Ensemble des points d’arrêt dans le code sourceSet breakpoints in source code

Vous pouvez définir un point d’arrêt sur n’importe quelle ligne de code exécutable.You can set a breakpoint on any line of executable code. Par exemple, dans l’exemple suivant C# code, vous pouvez définir un point d’arrêt sur la déclaration de variable, le for boucle ou code à l’intérieur de la for boucle.For example, in the following C# code, you could set a breakpoint on the variable declaration, the for loop, or any code inside the for loop. Vous ne pouvez pas définir un point d’arrêt sur les déclarations d’espace de noms ou une classe, ou sur la signature de méthode.You can't set a breakpoint on the namespace or class declarations, or on the method signature.

Pour définir un point d’arrêt dans le code source, cliquez dans la marge gauche en regard d’une ligne de code.To set a breakpoint in source code, click in the far left margin next to a line of code. Vous pouvez également sélectionner la ligne et appuyez sur F9, sélectionnez déboguer > point d’arrêt, ou avec le bouton droit et sélectionnez point d’arrêt > Insérer le point d’arrêt.You can also select the line and press F9, select Debug > Toggle Breakpoint, or right-click and select Breakpoint > Insert breakpoint. Le point d’arrêt apparaît sous la forme d’un point rouge dans la marge de gauche.The breakpoint appears as a red dot in the left margin.

Dans C# code, point d’arrêt et les lignes de l’exécution en cours sont automatiquement mis en surbrillance.In C# code, breakpoint and current execution lines are automatically highlighted. Pour le code C++, vous pouvez activer la mise en surbrillance de point d’arrêt et de lignes actuelles en sélectionnant outils (ou déboguer) > Options > Débogage > mettre en surbrillance la ligne source entière pour les points d’arrêt et l’instruction actuelle (C++ uniquement).For C++ code, you can turn on highlighting of breakpoint and current lines by selecting Tools (or Debug) > Options > Debugging > Highlight entire source line for breakpoints and current statement (C++ only).

Définissez un point d’arrêtSet a breakpoint

Lorsque vous déboguez, l’exécution s’arrête au point d’arrêt, avant l’exécution du code sur cette ligne.When you debug, execution pauses at the breakpoint, before the code on that line is executed. Le symbole de point d’arrêt affiche une flèche jaune.The breakpoint symbol shows a yellow arrow.

Sur le point d’arrêt dans l’exemple suivant, la valeur de testInt est toujours 1.At the breakpoint in the following example, the value of testInt is still 1.

L’exécution de point d’arrêt s’est arrêtéeBreakpoint execution stopped

Lorsque le débogueur s’arrête au point d’arrêt, vous pouvez consulter l’état actuel de l’application, y compris les valeurs des variables et la pile des appels.When the debugger stops at the breakpoint, you can look at the current state of the app, including variable values and the call stack. Pour plus d’informations sur la pile des appels, consultez Comment : utiliser la fenêtre Pile des appelsFor more information about the call stack, see How to: Use the Call Stack window.

  • Le point d’arrêt est un bouton bascule.The breakpoint is a toggle. Vous pouvez cliquer dessus, appuyez sur F9, ou utilisez déboguer > point d’arrêt pour supprimer ou insérez-la à nouveau.You can click it, press F9, or use Debug > Toggle Breakpoint to delete or reinsert it.

  • Pour désactiver un point d’arrêt sans le supprimer, placez le curseur sur ou faites un clic droit et sélectionnez désactiver le point d’arrêt.To disable a breakpoint without deleting it, hover over or right-click it, and select Disable breakpoint. Points d’arrêt désactivés apparaissent sous forme de points vides dans la marge de gauche ou la des points d’arrêt fenêtre.Disabled breakpoints appear as empty dots in the left margin or the Breakpoints window. Pour réactiver un point d’arrêt, placez le curseur sur ou faites un clic droit et sélectionnez activer le point d’arrêt.To re-enable a breakpoint, hover over or right-click it, and select Enable breakpoint.

  • Définir des conditions et actions, ajouter et modifier les étiquettes ou exporter un point d’arrêt en cliquant et en sélectionnant la commande appropriée, ou pointant dessus et en sélectionnant le paramètres icône.Set conditions and actions, add and edit labels, or export a breakpoint by right-clicking it and selecting the appropriate command, or hovering over it and selecting the Settings icon.

Définissez des points d’arrêt du débogueur windowsSet breakpoints from debugger windows

Vous pouvez également définir des points d’arrêt à partir de la pile des appels et désassemblage fenêtres du débogueur.You can also set breakpoints from the Call Stack and Disassembly debugger windows.

Définir un point d’arrêt dans la fenêtre Pile des appelsSet a breakpoint in the Call Stack window

Pour vous arrêter à l’instruction ou de la ligne à laquelle une fonction appelante retourne à, vous pouvez définir un point d’arrêt dans le pile des appels fenêtre.To break at the instruction or line that a calling function returns to, you can set a breakpoint in the Call Stack window.

Pour définir un point d’arrêt dans la fenêtre Pile des appels :To set a breakpoint in the Call Stack window:

  1. Pour ouvrir le pile des appels fenêtre, vous devez être suspendus pendant le débogage.To open the Call Stack window, you must be paused during debugging. Sélectionnez déboguer > Windows > pile des appels, ou appuyez sur Ctrl + Alt+C.Select Debug > Windows > Call Stack, or press Ctrl+Alt+C.

  2. Dans le pile des appels fenêtre, cliquez sur la fonction d’appel et sélectionnez point d’arrêt > insérer un point d’arrêt, ou appuyez sur F9.In the Call Stack window, right-click the calling function and select Breakpoint > Insert Breakpoint, or press F9.

    Un symbole de point d’arrêt apparaît en regard du nom d’appel de fonction dans la marge gauche de la pile des appels.A breakpoint symbol appears next to the function call name in the left margin of the call stack.

Le point d’arrêt de la pile des appels s’affiche dans le des points d’arrêt fenêtre en tant qu’adresse, avec un emplacement de mémoire qui correspond à la prochaine instruction exécutable de la fonction.The call stack breakpoint appears in the Breakpoints window as an address, with a memory location that corresponds to the next executable instruction in the function.

Le débogueur s’arrête au niveau de l’instruction.The debugger breaks at the instruction.

Pour plus d’informations sur la pile des appels, consultez Comment : utiliser la fenêtre Pile des appelsFor more information about the call stack, see How to: Use the Call Stack window.

À visuellement trace des points d’arrêt pendant l’exécution de code, consultez mapper les méthodes sur la pile des appels pendant le débogage.To visually trace breakpoints during code execution, see Map methods on the call stack while debugging.

Définir un point d’arrêt dans la fenêtre code machineSet a breakpoint in the Disassembly window

  1. Pour ouvrir le désassemblage fenêtre, vous devez être suspendus pendant le débogage.To open the Disassembly window, you must be paused during debugging. Sélectionnez déboguer > Windows > désassemblage, ou appuyez sur Alt + 8.Select Debug > Windows > Disassembly, or press Alt+8.

  2. Dans le désassemblage fenêtre, cliquez dans la marge gauche de l’instruction que vous souhaitez marquer un arrêt.In the Disassembly window, click in the left margin of the instruction you want to break at. Vous pouvez également sélectionner et appuyez sur F9, ou avec le bouton droit et sélectionnez point d’arrêt > insérer un point d’arrêt.You can also select it and press F9, or right-click and select Breakpoint > Insert Breakpoint.

Points d’arrêt de jeu (fonction)Set function breakpoints

Vous pouvez arrêter l’exécution lorsqu’une fonction est appelée.You can break execution when a function is called.

Pour définir un point d’arrêt de fonction :To set a function breakpoint:

  1. Sélectionnez déboguer > nouveau point d’arrêt > point d’arrêt de la fonction, ou appuyez sur Alt + F9 > Ctrl+B.Select Debug > New Breakpoint > Function Breakpoint, or press Alt+F9 > Ctrl+B.

    Vous pouvez également sélectionner New > point d’arrêt de la fonction dans le des points d’arrêt fenêtre.You can also select New > Function Breakpoint in the Breakpoints window.

  2. Dans le nouveau point d’arrêt de la fonction boîte de dialogue, entrez le nom de fonction dans le nom de la fonction boîte.In the New Function Breakpoint dialog, enter the function name in the Function Name box.

    Pour affiner la spécification de fonction :To narrow the function specification:

    • Utilisez le nom de fonction qualifié complet.Use the fully qualified function name.

      Exemple : Namespace1.ClassX.MethodA()Example: Namespace1.ClassX.MethodA()

    • Ajouter les types de paramètre d’une fonction surchargée.Add the parameter types of an overloaded function.

      Exemple : MethodA(int, string)Example: MethodA(int, string)

    • Utilisez le ' !' symbole pour spécifier le module.Use the '!' symbol to specify the module.

      Exemple : App1.dll!MethodAExample: App1.dll!MethodA

    • Utilisez l’opérateur de contexte en C++ natif.Use the context operator in native C++.

      {function, , [module]} [+<line offset from start of method>]

      Exemple : {MethodA, , App1.dll}+2Example: {MethodA, , App1.dll}+2

  3. Dans le langage liste déroulante, choisissez la langue de la fonction.In the Language dropdown, choose the language of the function.

  4. Sélectionnez OK.Select OK.

Définissez un point d’arrêt de fonction à l’aide d’une adresse de mémoire (C++ natif uniquement)Set a function breakpoint using a memory address (native C++ only)

Vous pouvez utiliser l’adresse d’un objet pour définir un point d’arrêt de la fonction sur une méthode appelée par une instance spécifique d’une classe.You can use the address of an object to set a function breakpoint on a method called by a specific instance of a class. Par exemple, étant donné un objet de type my_class, vous pouvez définir un point d’arrêt de fonction sur le my_method méthode qui appelle l’instance.For example, given an addressable object of type my_class, you can set a function breakpoint on the my_method method that instance calls.

  1. Définissez un point d’arrêt quelque part après l’instanciation de l’instance de la classe.Set a breakpoint somewhere after the instance of the class is instantiated.

  2. Rechercher l’adresse de l’instance (par exemple, 0xcccccccc).Find the address of the instance (for example, 0xcccccccc).

  3. Sélectionnez déboguer > nouveau point d’arrêt > point d’arrêt de la fonction, ou appuyez sur Alt + F9 > Ctrl+B.Select Debug > New Breakpoint > Function Breakpoint, or press Alt+F9 > Ctrl+B.

  4. Ajoutez le code suivant à la nom de la fonction zone, puis sélectionnez C++ langage.Add the following to the Function Name box, and select C++ language.

    ((my_class *) 0xcccccccc)->my_method  
    

Définir des points d’arrêt de données (natif C++ uniquement)Set data breakpoints (native C++ only)

Arrêt sur variable interrompre l’exécution quand une valeur stockée à une adresse mémoire spécifiée change.Data breakpoints break execution when a value stored at a specified memory address changes. Si la valeur est lue mais pas modifiée, l’exécution ne s’interrompt pas.If the value is read but not changed, execution doesn't break.

Pour définir un point d’arrêt de données :To set a data breakpoint:

  1. Dans un projet C++, démarrez le débogage et attendez qu’un point d’arrêt est atteint.In a C++ project, start debugging, and wait until a breakpoint is reached. Sur le déboguer menu, choisissez nouveau point d’arrêt > point d’arrêtOn the Debug menu, choose New Breakpoint > Data Breakpoint

    Vous pouvez également sélectionner New > point d’arrêt dans le des points d’arrêt fenêtre.You can also select New > Data Breakpoint in the Breakpoints window.

  2. Dans la zone Adresse, tapez une adresse mémoire ou une expression qui prend comme valeur une adresse mémoire.In the Address box, type a memory address, or an expression that evaluates to a memory address. Par exemple, tapez &avar pour interrompre l’exécution quand le contenu de la variable avar change.For example, type &avar to break when the contents of the variable avar changes.

  3. Dans la zone déroulante Nombre d’octets , sélectionnez le nombre d’octets que le débogueur doit surveiller.In the Byte Count dropdown, select the number of bytes you want the debugger to watch. Par exemple, si vous sélectionnez 4, le débogueur surveille les quatre octets à partir de &avar et interrompt l’exécution si l’un de ces octets change de valeur.For example, if you select 4, the debugger will watch the four bytes starting at &avar and break if any of those bytes change value.

Points d’arrêt de données ne fonctionnent pas dans les conditions suivantes :Data breakpoints don't work under the following conditions:

  • Un processus qui n’est pas en cours de débogage écrit à l’emplacement mémoire.A process that is not being debugged writes to the memory location.
  • L’emplacement mémoire est partagé entre plusieurs processus.The memory location is shared between two or more processes.
  • L’emplacement de mémoire est mis à jour dans le noyau.The memory location is updated within the kernel. Par exemple, si la mémoire est transmise à la Windows 32 bits ReadFile (fonction), la mémoire sera mise à jour du mode noyau, donc le débogueur ne s’arrête sur la mise à jour.For example, if memory is passed to the 32-bit Windows ReadFile function, the memory will be updated from kernel mode, so the debugger won't break on the update.

Note

  • Arrêt sur variable dépend d’adresses de mémoire spécifiques.Data breakpoints depend on specific memory addresses. L’adresse d’une variable change à partir d’une session de débogage à l’autre, des points d’arrêt de données sont automatiquement désactivés à la fin de chaque session de débogage.The address of a variable changes from one debugging session to the next, so data breakpoints are automatically disabled at the end of each debugging session.

  • Si vous définissez un point d’arrêt sur une variable locale, ce point d’arrêt reste activé quand la fonction s’arrête. Cependant, l’adresse mémoire n’est plus applicable, et le comportement du point d’arrêt est donc imprévisible.If you set a data breakpoint on a local variable, the breakpoint remains enabled when the function ends, but the memory address is no longer applicable, so the behavior of the breakpoint is unpredictable. Si vous définissez un point d’arrêt sur une variable locale, vous devez supprimer ou désactiver le point d’arrêt avant la fin de la fonction.If you set a data breakpoint on a local variable, you should delete or disable the breakpoint before the function ends.

Gérer les points d’arrêt dans la fenêtre Points d’arrêtManage breakpoints in the Breakpoints window

Vous pouvez utiliser la des points d’arrêt fenêtre pour afficher et gérer tous les points d’arrêt dans votre solution.You can use the Breakpoints window to see and manage all the breakpoints in your solution. Cet emplacement centralisé est particulièrement utile dans une solution de grande taille, ou pour des scénarios de débogage complexes où les points d’arrêt sont déterminants.This centralized location is especially helpful in a large solution, or for complex debugging scenarios where breakpoints are critical.

Dans le des points d’arrêt fenêtre, vous pouvez rechercher, trier, filtrer, activer/désactiver ou supprimer des points d’arrêt.In the Breakpoints window, you can search, sort, filter, enable/disable, or delete breakpoints. Vous pouvez également définir des conditions et les actions, ou ajouter une nouvelle fonction ou un point d’arrêt.You can also set conditions and actions, or add a new function or data breakpoint.

Pour ouvrir le des points d’arrêt fenêtre, sélectionnez déboguer > Windows > des points d’arrêt, ou appuyez sur ALT+F9 ou Ctrl+Alt+B.To open the Breakpoints window, select Debug > Windows > Breakpoints, or press Alt+F9 or Ctrl+Alt+B.

Fenêtre points d’arrêtBreakpoints window

Pour sélectionner les colonnes à afficher dans le des points d’arrêt fenêtre, sélectionnez afficher les colonnes.To select the columns to display in the Breakpoints window, select Show Columns. Sélectionnez un en-tête de colonne pour trier la liste des points d’arrêt selon cette colonne.Select a column header to sort the breakpoints list by that column.

Étiquettes de point d’arrêtBreakpoint labels

Vous pouvez utiliser des étiquettes pour trier et filtrer la liste des points d’arrêt dans le des points d’arrêt fenêtre.You can use labels to sort and filter the list of breakpoints in the Breakpoints window.

  1. Pour ajouter une étiquette à un point d’arrêt, cliquez sur le point d’arrêt dans le code source ou la des points d’arrêt fenêtre, puis modifier les étiquettes.To add a label to a breakpoint, right-click the breakpoint in the source code or the Breakpoints window, and then select Edit labels. Ajouter une nouvelle étiquette ou sélectionnez-en un déjà existant, puis sélectionnez OK.Add a new label or choose an existing one, and then select OK.
  2. Trier la liste de point d’arrêt dans le des points d’arrêt en sélectionnant le étiquettes, Conditions, ou les autres en-têtes de colonne.Sort the breakpoint list in the Breakpoints window by selecting the Labels, Conditions, or other column headers. Vous pouvez sélectionner les colonnes à afficher en sélectionnant afficher les colonnes dans la barre d’outils.You can select the columns to display by selecting Show Columns in the toolbar.

Exporter et importer les points d'arrêtExport and import breakpoints

Pour enregistrer ou partager l’état et l’emplacement de vos points d’arrêt, vous pouvez exporter ou les importer.To save or share the state and location of your breakpoints, you can export or import them.

  • Pour exporter un point d’arrêt dans un fichier XML, cliquez sur le point d’arrêt dans le code source ou des points d’arrêt , puis sélectionnez exporter ou exportation sélectionnée.To export a single breakpoint to an XML file, right-click the breakpoint in the source code or Breakpoints window, and select Export or Export selected. Sélectionnez un emplacement d’exportation, puis enregistrer.Select an export location, and then select Save. L’emplacement par défaut est le dossier de solution.The default location is the solution folder.
  • Pour exporter plusieurs points d’arrêt, dans le des points d’arrêt fenêtre, sélectionnez les cases en regard des points d’arrêt, ou entrez les critères de recherche dans les recherche champ.To export several breakpoints, in the Breakpoints window, select the boxes next to the breakpoints, or enter search criteria in the Search field. Sélectionnez le exporter tous les points d’arrêt correspondant aux critères de recherche actuel icône, enregistrez le fichier.Select the Export all breakpoints matching the current search criteria icon, and save the file.
  • Pour exporter tous les points d’arrêt, désactivez toutes les cases et laisser le recherche champ vide.To export all breakpoints, deselect all boxes and leave the Search field blank. Sélectionnez le exporter tous les points d’arrêt correspondant aux critères de recherche actuel icône, enregistrez le fichier.Select the Export all breakpoints matching the current search criteria icon, and save the file.
  • Pour importer des points d’arrêt, dans le des points d’arrêt fenêtre, sélectionnez le importer des points d’arrêt à partir d’un fichier icône, accédez à l’emplacement du fichier XML, puis sélectionnez Open.To import breakpoints, in the Breakpoints window, select the Import breakpoints from a file icon, navigate to the XML file location, and select Open.

Conditions de point d’arrêtBreakpoint conditions

Vous pouvez contrôler quand et où un point d’arrêt s’exécute en définissant des conditions.You can control when and where a breakpoint executes by setting conditions. La condition peut être toute expression valide qui reconnaît le débogueur.The condition can be any valid expression that the debugger recognizes. Pour plus d’informations sur les expressions valides, consultez Expressions dans le débogueur.For more information about valid expressions, see Expressions in the debugger.

Pour définir une condition de point d’arrêt :To set a breakpoint condition:

  1. Cliquez sur le symbole de point d’arrêt et sélectionnez Conditions.Right-click the breakpoint symbol and select Conditions. Ou placez le curseur sur le symbole de point d’arrêt, sélectionnez le paramètres icône, puis sélectionnez Conditions dans le les paramètres de point d’arrêt fenêtre.Or hover over the breakpoint symbol, select the Settings icon, and then select Conditions in the Breakpoint Settings window.

    Vous pouvez également définir des conditions dans les des points d’arrêt fenêtre en double-cliquant sur un point d’arrêt et en sélectionnant paramètres, puis en sélectionnant Conditions.You can also set conditions in the Breakpoints window by right-clicking a breakpoint and selecting Settings, and then selecting Conditions.

    Paramètres de point d’arrêtBreakpoint settings

  2. Dans la liste déroulante, sélectionnez Expression conditionnelle, nombre d’accès, ou filtreet définissez la valeur en conséquence.In the dropdown, select Conditional Expression, Hit Count, or Filter, and set the value accordingly.

  3. Sélectionnez fermer ou appuyez sur Ctrl+entrée pour fermer la les paramètres de point d’arrêt fenêtre.Select Close or press Ctrl+Enter to close the Breakpoint Settings window. Ou, à partir de la des points d’arrêt fenêtre, sélectionnez OK pour fermer la boîte de dialogue.Or, from the Breakpoints window, select OK to close the dialog.

Points d’arrêt avec un ensemble de conditions apparaissent avec un + symbole dans le code source et des points d’arrêt windows.Breakpoints with conditions set appear with a + symbol in the source code and Breakpoints windows.

Expression conditionnelleConditional Expression

Lorsque vous sélectionnez Expression conditionnelle, vous pouvez choisir entre deux conditions : A la valeur true ou lorsque modifié.When you select Conditional Expression, you can choose between two conditions: Is true or When changed. Choisissez vaut pour arrêter l’exécution lorsque l’expression est satisfaite, ou lorsque modifié à arrêter quand la valeur de l’expression a changé.Choose Is true to break when the expression is satisfied, or When changed to break when the value of the expression has changed.

Dans l’exemple suivant, le point d’arrêt est atteint uniquement lorsque la valeur de testInt est 4:In the following example, the breakpoint is hit only when the value of testInt is 4:

Condition de point d’arrêt est trueBreakpoint condition is true

Dans l’exemple suivant, le point d’arrêt est atteint uniquement lorsque la valeur de testInt modifications :In the following example, the breakpoint is hit only when the value of testInt changes:

Point d’arrêt lorsque modifiéBreakpoint When changed

Si vous définissez une condition de point d’arrêt dont la syntaxe est incorrecte, un message d’avertissement s’affiche.If you set a breakpoint condition with invalid syntax, a warning message appears. Si vous spécifiez une condition de point d’arrêt avec une syntaxe valide, mais dont la sémantique n’est pas valide, un message d’avertissement apparaît quand le point d’arrêt est atteint pour la première fois.If you specify a breakpoint condition with valid syntax but invalid semantics, a warning message appears the first time the breakpoint is hit. Dans les deux cas, le débogueur s’arrête lorsqu’il atteint le point d’arrêt non valide.In either case, the debugger breaks when it hits the invalid breakpoint. Le point d’arrêt n’est ignoré que si la condition est valide et prend la valeur false.The breakpoint is skipped only if the condition is valid and evaluates to false.

Note

Le comportement du champ En cas de modification varie en fonction du langage de programmation.The behavior of the When changed field is different for different programming languages.

  • Pour le code natif, le débogueur ne considère pas la première évaluation de la condition comme étant une modification, donc n’atteint le point d’arrêt sur la première évaluation.For native code, the debugger doesn't consider the first evaluation of the condition to be a change, so doesn't hit the breakpoint on the first evaluation.
  • Pour le code managé, le débogueur atteint le point d’arrêt sur la première évaluation après lorsque modifié est sélectionné.For managed code, the debugger hits the breakpoint on the first evaluation after When changed is selected.

À l’aide des ID d’objet dans des expressions conditionnelles (C# et F# uniquement)Using Object IDs in conditional expressions (C# and F# only)

Il est parfois lorsque vous souhaitez observer le comportement d’un objet spécifique.There are times when you want to observe the behavior of a specific object. Par exemple, vous souhaiterez peut-être savoir pourquoi un objet a été inséré dans une collection plusieurs fois.For example, you might want to find out why an object was inserted into a collection more than once. En C# et en F#, vous pouvez créer des ID d’objet pour des instances spécifiques de types référence et les utiliser dans des conditions de point d’arrêt.In C# and F#, you can create object IDs for specific instances of reference types, and use them in breakpoint conditions. L’ID d’objet est généré par les services de débogage du Common Language Runtime (CLR) et associé à l’objet.The object ID is generated by the common language runtime (CLR) debugging services and associated with the object.

Pour créer un ID d’objet :To create an Object ID:

  1. Définissez un point d’arrêt dans le code un emplacement une fois que l’objet a été créé.Set a breakpoint in the code some place after the object has been created.

  2. Démarrez le débogage et lors de l’exécution s’arrête au point d’arrêt, sélectionnez déboguer > Windows > variables locales ou Alt + 4 pour ouvrir le variables locales fenêtre.Start debugging, and when execution pauses at the breakpoint, select Debug > Windows > Locals or Alt+4 to open the Locals window.

    Rechercher le point d’arrêt dans le variables locales fenêtre, faites un clic droit, puis sélectionnez Make Object ID.Find the breakpoint in the Locals window, right-click it, and select Make Object ID.

    Le symbole $ et un nombre s’affichent alors dans la fenêtre Variables locales .You should see a $ plus a number in the Locals window. Il s’agit de l’ID d’objet.This is the object ID.

  3. Ajouter un nouveau point d’arrêt au point que vous voulez examiner ; par exemple, lorsque l’objet doit être ajouté à la collection.Add a new breakpoint at the point you want to investigate; for example, when the object is to be added to the collection. Cliquez avec le bouton droit sur le point d’arrêt et sélectionnez Conditions.Right-click the breakpoint and select Conditions.

  4. Utilisez l’ID d’objet dans le champ Expression conditionnelle.Use the Object ID in the Conditional Expression field. Par exemple, si la variable item est l’objet à ajouter à la collection, sélectionnez vaut et type item == $<n >, où <n > est le numéro d’ID objet .For example, if the variable item is the object to be added to the collection, select Is true and type item == $<n>, where <n> is the object ID number.

    L’exécution s’arrête au point où cet objet doit être ajouté à la collection.Execution will break at the point when that object is to be added to the collection.

    Pour supprimer l’ID d’objet, cliquez sur la variable dans le variables locales fenêtre et sélectionnez supprimer l’ID objet.To delete the Object ID, right-click the variable in the Locals window and select Delete Object ID.

Note

Les ID d’objet créent des références faibles et n’empêchent pas l’objet de subir une récupération de mémoire.Object IDs create weak references, and do not prevent the object from being garbage collected. Leur validité ne vaut que pour la session de débogage active.They are valid only for the current debugging session.

Nombre d’accèsHit Count

Si vous pensez qu’une boucle dans votre code commence anormal après un certain nombre d’itérations, vous pouvez définir un point d’arrêt pour arrêter l’exécution une fois ce nombre de correspondances, plutôt que de devoir appuyez plusieurs fois sur F5 pour atteindre cette itération.If you suspect that a loop in your code starts misbehaving after a certain number of iterations, you can set a breakpoint to stop execution after that number of hits, rather than having to repeatedly press F5 to reach that iteration.

Sous Conditions dans le les paramètres de point d’arrêt fenêtre, sélectionnez nombre d’accès, puis spécifiez le nombre d’itérations.Under Conditions in the Breakpoint Settings window, select Hit Count, and then specify the number of iterations. Dans l’exemple suivant, le point d’arrêt est défini à atteindre à chaque autre itération :In the following example, the breakpoint is set to hit on every other iteration:

Nombre d’accès de point d’arrêtBreakpoint hit count

FiltreFilter

Vous pouvez limiter le déclenchement d’un point d’arrêt seulement sur des appareils spécifiés ou dans des processus et des threads spécifiés.You can restrict a breakpoint to fire only on specified devices, or in specified processes and threads.

Sous Conditions dans le les paramètres de point d’arrêt fenêtre, sélectionnez filtre, puis entrez un ou plusieurs des expressions suivantes :Under Conditions in the Breakpoint Settings window, select Filter, and then enter one or more of the following expressions:

  • MachineName = "nom"MachineName = "name"
  • ProcessId = valeurProcessId = value
  • ProcessName = "nom"ProcessName = "name"
  • ThreadId = valeurThreadId = value
  • ThreadName = "nom"ThreadName = "name"

Placez les valeurs de chaîne entre guillemets doubles.Enclose string values in double quotes. Vous pouvez combiner des clauses à l’aide de & (AND), || (OR), ! (NOT) et de parenthèses.You can combine clauses using & (AND), || (OR), ! (NOT), and parentheses.

Actions de points d’arrêt et points de traceBreakpoint actions and tracepoints

Un point de trace est un point d’arrêt qui affiche un message dans la fenêtre Sortie.A tracepoint is a breakpoint that prints a message to the Output window. Un point de trace peut faire office d’instruction de trace temporaire dans le langage de programmation.A tracepoint can act like a temporary trace statement in the programming language.

Pour définir un point de trace :To set a tracepoint:

  1. Cliquez sur un point d’arrêt et sélectionnez Actions.Right-click a breakpoint and select Actions. Ou, dans le les paramètres de point d’arrêt fenêtre, pointez sur le point d’arrêt, sélectionnez le paramètres icône, puis sélectionnez Actions.Or, in the Breakpoint Settings window, hover over the breakpoint, select the Settings icon, and then select Actions.

  2. Entrez un message dans le consigner le message dans la fenêtre sortie champ.Enter a message in the Log a message to Output window field. Le message peut contenir des chaînes de texte générique, les valeurs des variables ou des expressions entre accolades et spécificateurs de format ( C# et C++) pour les valeurs.The message can include generic text strings, values of variables or expressions enclosed in curly braces, and format specifiers (C# and C++) for the values.

    Vous pouvez également utiliser les mots clés spéciaux suivants dans le message :You can also use the following special keywords in the message:

    • $ADDRESS -instruction actuelle$ADDRESS - Current instruction
    • $CALLER -nom de la fonction appelante$CALLER - Calling function name
    • $CALLSTACK -pile des appels$CALLSTACK - Call stack
    • $FUNCTION -nom de la fonction actuelle$FUNCTION - Current function name
    • $PID -id de processus$PID - Process id
    • $PNAME -nom du processus$PNAME - Process name
    • $TID -id de thread$TID - Thread id
    • $TNAME -nom de thread$TNAME - Thread name
    • $TICK -nombre de cycles (à partir de Windows GetTickCount)$TICK - Tick count (from Windows GetTickCount)
  3. Pour imprimer le message à la sortie fenêtre sans rupture, sélectionnez le continuer l’exécution case à cocher.To print the message to the Output window without breaking, select the Continue Execution check box. Pour imprimer l’exécution de message et d’arrêt sur le point de trace, désactivez la case à cocher.To print the message and break execution at the tracepoint, clear the check box.

Points de trace apparaissent sous forme de losanges rouge dans la marge gauche du code source et des points d’arrêt windows.Tracepoints appear as red diamonds in the left margin of the source code and Breakpoints windows.

Voir aussiSee also