Utiliser les points d’arrêt dans le débogueur Visual Studio
Les points d’arrêt sont l’une des techniques de débogage les plus importantes de la boîte à outils du développeur. Vous définissez des points d’arrêt partout où vous souhaitez mettre en pause l’exécution du débogueur. Par exemple, vous pouvez voir l’état des variables de code ou examiner la pile des appels sur un certain point d’arrêt. Si vous essayez de résoudre un avertissement ou un problème quand vous utilisez des points d’arrêt, consultez Résoudre les problèmes des points d’arrêt dans le débogueur Visual Studio.
Notes
Si vous connaissez la tâche ou le problème que vous essayez de résoudre, mais que vous ne savez pas quel type de point d’arrêt utiliser, consultez FAQ - Rechercher votre fonctionnalité de débogage.
Définir des points d’arrêt dans le code source
Vous pouvez définir un point d’arrêt sur n’importe quelle ligne de code exécutable. Par exemple, dans le code C# suivant, vous pouvez définir un point d’arrêt sur la ligne de code avec l’attribution de variable (int testInt = 1
), la boucle for
ou tout le code à l’intérieur de la boucle for
. Vous ne pouvez pas définir de point d’arrêt sur les signatures de méthode, les déclarations d’un espace de noms ou d’une classe, ou les déclarations de variable s’il n’y a pas d’attribution ni de méthode getter/setter.
Pour définir un point d’arrêt dans le code source :
- Cliquez dans la marge complètement à gauche à côté d’une ligne de code. Vous pouvez également sélectionner la ligne et appuyer sur F9, sélectionner Déboguer>Activer/désactiver le point d’arrêt, ou faire un clic droit et sélectionner Point d’arrêt>Insérer un point d’arrêt. Le point d’arrêt s’affiche sous la forme d’un point rouge dans la marge à gauche.
Pour la plupart des langages, notamment C#, le point d’arrêt et les lignes d’exécution actuelles sont automatiquement mis en surbrillance. Pour le code C++, vous pouvez activer la mise en surbrillance du point d’arrêt et des 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).
Quand vous déboguez, l’exécution se met en pause sur le point d’arrêt, avant l’exécution du code sur cette ligne. Le symbole de point d’arrêt montre une flèche jaune.
Sur le point d’arrêt de l’exemple suivant, la valeur de testInt
est toujours 3. Ainsi, la valeur n’a pas changé depuis l’initialisation de la variable (définie sur la valeur 3), car l’instruction en jaune n’a pas encore été exécutée.
Sur le point d’arrêt de l’exemple suivant, la valeur de testInt
est toujours 1. Par conséquent, la valeur n’a pas changé depuis l’initialisation de la variable (définie sur la valeur 1), car l’instruction en jaune n’a pas encore été exécutée.
Quand le débogueur s’arrête sur le point d’arrêt, vous pouvez examiner l’état actuel de l’application, y compris les valeurs de variable et la pile des appels.
Voici quelques instructions générales pour l’utilisation des points d’arrêt.
Le point d’arrêt est un bouton bascule. Vous pouvez cliquer dessus, appuyer sur F9 ou utiliser Déboguer>Activer/désactiver le point d’arrêt pour le supprimer ou le réinsérer.
Pour désactiver un point d’arrêt sans le supprimer, pointez dessus ou cliquez dessus avec le bouton droit, puis sélectionnez Désactiver le point d’arrêt. Les points d’arrêt désactivés s’affichent sous la forme de points vides dans la marge de gauche ou la fenêtre Points d’arrêt. Pour réactiver un point d’arrêt, pointez dessus ou cliquez dessus avec le bouton droit, puis sélectionnez Activer le point d’arrêt.
Définissez des conditions et des actions, ajoutez et modifiez des étiquettes, ou exportez un point d’arrêt en cliquant dessus avec le bouton droit et en sélectionnant la commande appropriée, ou en pointant dessus et en sélectionnant l’icône Paramètres.
Actions de points d’arrêt et points de trace
Un point de trace est un point d’arrêt qui affiche un message dans la fenêtre Sortie. Un point de trace peut agir comme une instruction de trace temporaire dans le langage de programmation et ne met pas en pause l’exécution du code. Vous créez un point de trace en définissant une action spéciale dans la fenêtre Paramètres du point d’arrêt. Pour obtenir des instructions détaillées, consultez Utiliser des points de trace dans le débogueur Visual Studio.
Conditions de point d’arrêt
Vous pouvez contrôler quand et où un point d’arrêt s’exécute en définissant des conditions. La condition peut être n’importe quelle expression valide reconnue par le débogueur. Pour plus d’informations sur les expressions valides, consultez Expressions dans le débogueur.
Pour définir une condition de point d’arrêt :
Cliquez avec le bouton droit sur le symbole de point d’arrêt et sélectionnez Conditions (ou appuyez sur Alt + F9, C). Ou pointez sur le symbole de point d’arrêt, sélectionnez l’icône Paramètres, puis sélectionnez Conditions dans la fenêtre Paramètres du point d’arrêt.
Vous pouvez également cliquer avec le bouton droit dans la marge complètement à gauche à côté d’une ligne de code et sélectionner Insérer un point d’arrêt conditionnel dans le menu contextuel pour définir un nouveau point d’arrêt conditionnel.
Vous pouvez également définir des conditions dans la fenêtre Points d’arrêt en cliquant avec le bouton droit sur un point d’arrêt, en sélectionnant Paramètres, puis en sélectionnant Conditions
Dans la liste déroulante, sélectionnez Expression conditionnelle, Nombre d’accès ou Filtre, puis définissez la valeur en conséquence.
Sélectionnez Fermer ou appuyez sur Ctrl+Entrée pour fermer la fenêtre Paramètres du point d’arrêt. Sinon, dans la fenêtre Points d’arrêt, sélectionnez OK pour fermer la boîte de dialogue.
Les points d’arrêt avec des conditions définies s’affichent avec un symbole + dans le code source et les fenêtres Points d’arrêt.
Créer une expression conditionnelle
Quand vous sélectionnez Expression conditionnelle, vous avez le choix entre deux conditions : Est true et En cas de modification. Choisissez Est true pour arrêter l’exécution quand l’expression est satisfaite ou En cas de modification pour l’arrêter quand la valeur de l’expression a changé.
Dans l’exemple suivant, le point d’arrêt est atteint uniquement quand la valeur de testInt
est 4 :
Dans l’exemple suivant, le point d’arrêt est atteint uniquement quand la valeur de testInt
change :
Si vous définissez une condition de point d’arrêt dont la syntaxe est incorrecte, un message d’avertissement s’affiche. 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. Dans les deux cas, le débogueur s’arrête quand il atteint le point d’arrêt non valide. Le point d’arrêt n’est ignoré que si la condition est valide et prend la valeur false
.
Notes
Pour le champ En cas de modification, le débogueur ne considère pas la première évaluation de la condition comme un changement, et n’atteint donc pas le point d’arrêt pendant la première évaluation.
Utiliser des ID d’objet dans les expressions conditionnelles (C# et F# uniquement)
Parfois, vous voulez observer le comportement d’un objet spécifique. Par exemple, vous voulez savoir pourquoi un objet a été inséré plusieurs fois dans une collection. 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. L’ID d’objet est généré par les services de débogage du Common Language Runtime (CLR) et associé à l’objet.
Pour créer un ID d’objet :
Définissez un point d’arrêt dans le code un peu après l’endroit où l’objet a été créé.
Démarrez le débogage et, quand l’exécution se met en pause sur le point d’arrêt, sélectionnez Déboguer>Fenêtres>Variables locales (ou appuyez sur Ctrl + Alt + V, L) pour ouvrir la fenêtre Variables locales.
Recherchez l’instance d’objet spécifique dans la fenêtre Variables locales, cliquez dessus avec le bouton droit, puis sélectionnez Définir l’ID d’objet.
Le symbole $ et un nombre s’affichent alors dans la fenêtre Variables locales . Il s’agit de l’ID d’objet.
Ajoutez un nouveau point d’arrêt conditionnel sur le point vous voulez investiguer, par exemple, quand l’objet est ajouté à la collection. Cliquez avec le bouton droit sur le point d’arrêt et sélectionnez Conditions.
Utilisez l’ID d’objet dans le champ Expression conditionnelle. Par exemple, si la variable
item
est l’objet à ajouter à la collection, sélectionnez Est true et tapez item == $<n>, où <n> est le numéro de l’ID d’objet.L’exécution s’arrête au point où cet objet doit être ajouté à la collection.
Pour supprimer l’ID d’objet, cliquez avec le bouton droit sur la variable dans la fenêtre Variables locales, puis sélectionnez Supprimer l’ID d’objet.
Notes
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. Leur validité ne vaut que pour la session de débogage active.
Définir une condition de nombre d’accès
Si vous pensez qu’une boucle de votre code commence à avoir un comportement anormal après un certain nombre d’itérations, vous pouvez définir un point d’arrêt pour arrêter l’exécution au bout de ce nombre d’accès, plutôt que d’appuyer plusieurs fois sur F5 pour atteindre cette itération.
Sous Conditions dans la fenêtre Paramètres du point d’arrêt, sélectionnez Nombre d’accès, puis spécifiez le nombre d’itérations. Dans l’exemple suivant, le point d’arrêt est atteint à chaque itération :
Définir une condition de filtre
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.
Sous Conditions dans la fenêtre Paramètres du point d’arrêt, sélectionnez Filtre, puis entrez une ou plusieurs des expressions suivantes :
- MachineName = "nom"
- ProcessId = valeur
- ProcessName = "nom"
- ThreadId = valeur
- ThreadName = "nom"
Placez les valeurs de chaîne entre guillemets doubles. Vous pouvez combiner des clauses à l’aide de &
(AND), ||
(OR), !
(NOT) et de parenthèses.
Définir des points d’arrêt de fonction
Vous pouvez arrêter l’exécution quand une fonction est appelée. Cela est utile, par exemple, quand vous connaissez le nom de la fonction, mais pas son emplacement. C’est également utile si vous avez des fonctions du même nom et que vous souhaitez toutes les arrêter (comme des fonctions surchargées ou des fonctions dans différents projets).
Pour définir un point d’arrêt de fonction :
Sélectionnez Déboguer>Nouveau point d’arrêt>Point d’arrêt de fonction, ou appuyez sur Ctrl + K, B.
Vous pouvez également sélectionner Nouveau>Point d’arrêt de fonction dans la fenêtre Points d’arrêt.
Dans la boîte de dialogue Nouveau point d’arrêt de fonction, entrez le nom de la fonction dans la zone Nom de la fonction.
Pour affiner la spécification de la fonction :
Utilisez le nom complet de la fonction.
Exemple :
Namespace1.ClassX.MethodA()
Ajoutez les types de paramètre d’une fonction surchargée.
Exemple :
MethodA(int, string)
Utilisez le symbole « ! » pour spécifier le module.
Exemple :
App1.dll!MethodA
Utilisez l’opérateur de contexte en C++ natif.
{function, , [module]} [+<line offset from start of method>]
Exemple :
{MethodA, , App1.dll}+2
Dans la liste déroulante Langage, choisissez le langage de la fonction.
Sélectionnez OK.
Définir un point d’arrêt de fonction en utilisant une adresse mémoire (C++ natif uniquement)
Vous pouvez aussi utiliser l’adresse d’un objet pour définir un point d’arrêt de fonction sur une méthode appelée par une instance spécifique d’une classe. Par exemple, avec un objet adressable de type my_class
, vous pouvez définir un point d’arrêt de fonction sur la méthode my_method
appelée par cette instance.
Définissez un point d’arrêt quelque part après l’instanciation de l’instance de la classe.
Recherchez l’adresse de l’instance (par exemple,
0xcccccccc
).Sélectionnez Déboguer>Nouveau point d’arrêt>Point d’arrêt de fonction, ou appuyez sur Ctrl + K, B.
Ajoutez ce qui suit à la zone Nom de la fonction, puis sélectionnez le langage C++.
((my_class *) 0xcccccccc)->my_method
Définir des points d’arrêt de données (.NET Core 3.x ou .NET 5+)
Les points d’arrêt de données arrêtent l’exécution quand la propriété d’un objet spécifique change.
Pour définir un point d’arrêt de données :
Dans un projet .NET Core ou .NET 5+, démarrez le débogage et attendez qu’un point d’arrêt soit atteint.
Dans la fenêtre Automatique, Espion ou Variables locales, cliquez avec le bouton droit sur une propriété et sélectionnez Arrêter quand la valeur change dans le menu contextuel.
Les points d’arrêt des données pour .NET Core et .NET 5+ ne fonctionnent pas pour :
- Propriétés non extensibles dans la fenêtre Info-bulle, Variables locales, Automatique ou Espion
- Variables statiques
- Classes avec l’attribut DebuggerTypeProxy
- Champs à l’intérieur de structs
Pour connaître le nombre maximal que vous pouvez définir, consultez les Limites matérielles du point d’arrêt des données.
Définir des points d’arrêt de données (C++ natif uniquement)
Les points d’arrêt de données arrêtent l’exécution quand une valeur stockée sur une adresse mémoire spécifiée change. Si la valeur est lue mais pas modifiée, l’exécution ne s’interrompt pas.
Pour définir un point d’arrêt de données :
Dans un projet C++, démarrez le débogage et attendez qu’un point d’arrêt soit atteint. Dans le menu Déboguer, choisissez Nouveau point d’arrêt>Nouveau point d’arrêt.
Vous pouvez également sélectionner Nouveau>Point d’arrêt de données dans la fenêtre Points d’arrêt, ou cliquer avec le bouton droit sur un élément dans la fenêtre Automatique, Espion ou Variables locales, puis sélectionner Arrêter quand la valeur change dans le menu contextuel.
Dans la zone Adresse, tapez une adresse mémoire ou une expression qui prend comme valeur une adresse mémoire. Par exemple, tapez
&avar
pour interrompre l’exécution quand le contenu de la variableavar
change.Dans la zone déroulante Nombre d’octets , sélectionnez le nombre d’octets que le débogueur doit surveiller. 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.
Les points d’arrêt de données ne fonctionnent pas dans les conditions suivantes :
- Un processus qui n’est pas en cours de débogage écrit à l’emplacement mémoire.
- L’emplacement mémoire est partagé entre plusieurs processus.
- L’emplacement de mémoire est mis à jour dans le noyau. Par exemple, si la mémoire est passée à la fonction
ReadFile
Windows 32 bits, elle est mise à jour à partir du mode noyau et le débogueur ne s’arrête pas sur la mise à jour. - Quand l’expression watch est supérieure à 4 octets sur du matériel 32 bits et à 8 octets sur du matériel 64 bits. Il s’agit d’une limitation de l’architecture x86.
Notes
Les points d’arrêt de données dépendent d’adresses mémoire spécifiques. L’adresse d’une variable change d’une session de débogage à la suivante, de sorte que les points d’arrêt de données sont automatiquement désactivés à la fin de chaque session de débogage.
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. Si vous définissez un point d’arrêt de données sur une variable locale, vous devez le supprimer ou le désactiver avant la fin de la fonction.
Limites matérielles du point d’arrêt des données
Le noyau Windows et le matériel sous-jacent ont les limites suivantes lors de la définition de points d’arrêt des données. La limite fait référence au nombre maximal de points d’arrêt des données que vous pouvez définir.
Architecture du processeur | Limite de point d’arrêt des données |
---|---|
x64 et x86 | 4 |
ARM64 | 2 |
ARM | 1 |
Définir un point d’arrêt dépendant
Les points d’arrêt dépendants arrêtent l’exécution uniquement si un autre point d’arrêt est atteint en premier. Ainsi, dans un scénario complexe comme le débogage d’une application multithread, vous pouvez configurer les points d’arrêt supplémentaires après la première fois qu’un autre point d’arrêt est atteint. Cela peut faciliter le débogage du code dans des chemins courants comme une boucle de jeu ou une API d’utilitaire, car un point d’arrêt dans ces fonctions peut être configuré pour être activé uniquement si la fonction est appelée à partir d’une partie spécifique de votre application.
Pour définir un point d’arrêt dépendant :
Pointez sur le symbole de point d’arrêt, choisissez l’icône Paramètres, puis sélectionnez Activer uniquement quand le point d’arrêt suivant est atteint dans la fenêtre Paramètres du point d’arrêt.
Dans la liste déroulante, sélectionnez le point d’arrêt prérequis dont vous souhaitez que votre point d’arrêt actuel dépende.
Choisissez Fermer ou appuyez sur Ctrl+Entrée pour fermer la fenêtre Paramètres du point d’arrêt. Sinon, dans la fenêtre Points d’arrêt, choisissez OK pour fermer la boîte de dialogue.
Vous pouvez aussi utiliser le menu contextuel (bouton droit) pour définir un point d’arrêt dépendant.
Cliquez avec le bouton droit dans la marge complètement à gauche à côté d’une ligne de code, puis sélectionnez Insérer un point d’arrêt dépendant dans le menu contextuel.
- Les points d’arrêt dépendants ne fonctionnent pas s’il y a un seul point d’arrêt dans votre application.
- Les points d’arrêt dépendants sont convertis en points d’arrêt de ligne normaux si le point d’arrêt prérequis est supprimé.
Définir un point d’arrêt temporaire
Ce point d’arrêt vous permet d’arrêter le code une seule fois. Pendant le débogage, le débogueur Visual Studio met en pause l’application en cours d’exécution une seule fois pour ce point d’arrêt, puis le supprime immédiatement après qu’il a été atteint.
Pour définir un point d’arrêt temporaire :
Pointez sur le symbole de point d’arrêt, choisissez l’icône Paramètres, puis sélectionnez Supprimer le point d’arrêt dès qu’il est atteint dans la fenêtre Paramètres du point d’arrêt.
Choisissez Fermer ou appuyez sur Ctrl+Entrée pour fermer la fenêtre Paramètres du point d’arrêt. Sinon, dans la fenêtre Points d’arrêt, choisissez OK pour fermer la boîte de dialogue.
Vous pouvez aussi utiliser le menu contextuel (bouton droit) pour définir un point d’arrêt temporaire.
Cliquez avec le bouton droit dans la marge complètement à gauche à côté d’une ligne de code, puis sélectionnez Insérer un point d’arrêt temporaire dans le menu contextuel.
Vous pouvez également simplement utiliser le raccourci F9 + Maj + Alt, T et définir le point d’arrêt temporaire sur la ligne souhaitée.
Gérer les points d'arrêt dans la fenêtre Points d'arrêt
Vous pouvez utiliser la fenêtre Points d’arrêt pour voir et gérer tous les points d’arrêt dans votre solution. Cet emplacement centralisé est particulièrement utile dans les grandes solutions ou dans les scénarios de débogage complexes où les points d’arrêt sont critiques.
Dans la fenêtre Points d’arrêt, vous pouvez rechercher, trier, filtrer, activer/désactiver ou supprimer des points d’arrêt. Vous pouvez également définir des conditions et des actions, ou ajouter un nouveau point d’arrêt de fonction ou de données.
Pour ouvrir la fenêtre Points d’arrêt, sélectionnez Déboguer>Fenêtres>Points d’arrêt, ou appuyez sur Ctrl+Alt+B.
Pour sélectionner les colonnes à afficher dans la fenêtre Points d’arrêt, sélectionnez Afficher les colonnes. Sélectionnez l’en-tête d’une colonne pour trier les points d’arrêt en fonction de cette colonne.
Étiquettes de point d’arrêt
Vous pouvez utiliser des étiquettes pour trier et filtrer la liste des points d’arrêt dans la fenêtre Points d’arrêt.
- Pour ajouter une étiquette à un point d’arrêt, cliquez avec le bouton droit sur le point d’arrêt dans le code source ou la fenêtre Points d’arrêt, puis sélectionnez Modifier les étiquettes. Ajoutez une nouvelle étiquette ou choisissez une étiquette existante, puis sélectionnez OK.
- Triez la liste des points d’arrêt dans la fenêtre Points d’arrêt en sélectionnant les en-têtes Étiquettes, Conditions ou d’autres en-têtes de colonne. Vous pouvez sélectionner les colonnes à afficher en sélectionnant Afficher les colonnes dans la barre d’outils.
Groupes de points d’arrêt
Dans les scénarios de débogage complexes, vous avez la possibilité de créer des groupes pour organiser vos points d’arrêt. Vous pouvez ainsi activer et désactiver rapidement les regroupements logiques de points d’arrêt en fonction du scénario en cours que vous essayez de déboguer.
Pour créer des points d’arrêt, ouvrez la fenêtre Points d'arrêt et sélectionnez Nouveau > Groupe de points d'arrêt, puis saisissez un nom pour le groupe. Pour ajouter un point d’arrêt à un groupe, cliquez sur le point d’arrêt avec le bouton droit et choisissez Ajouter au groupe de points d’arrêt><nom du groupe>. Ou bien glissez-déposez vos points d’arrêt dans le groupe souhaité.
Pour définir un groupe de points d’arrêt par défaut, cliquez avec le bouton droit sur un groupe, puis sélectionnez Définir comme groupe de points d’arrêt par défaut. Lorsque vous définissez un groupe de points d’arrêt par défaut, les nouveaux points d’arrêt que vous créez sont automatiquement ajoutés au groupe.
Exporter et importer les points d'arrêt
Pour enregistrer ou partager l’état et l’emplacement de vos points d’arrêt, vous pouvez les exporter ou les importer.
- Pour exporter un seul point d’arrêt vers un fichier XML, cliquez avec le bouton droit sur le point d’arrêt dans le code source ou la fenêtre Points d’arrêt, puis sélectionnez Exporter ou Exporter sélectionné. Sélectionnez un emplacement d’exportation, puis sélectionnez Enregistrer. L’emplacement par défaut est le dossier de solution.
- Pour exporter plusieurs points d’arrêt, dans la fenêtre Points d’arrêt, cochez les case à côté des points d’arrêt ou entrez des critères de recherche dans le champ Rechercher. Sélectionnez l’icône Exporter tous les points d’arrêt correspondant aux critères de recherche actuels, puis enregistrez le fichier.
- Pour exporter tous les points d’arrêt, décochez toutes les cases et laissez le champ Rechercher vide. Sélectionnez l’icône Exporter tous les points d’arrêt correspondant aux critères de recherche actuels, puis enregistrez le fichier.
- Pour importer des points d’arrêt, dans la fenêtre Points d’arrêt, sélectionnez l’icône Importer des points d’arrêt à partir d’un fichier, accédez à l’emplacement du fichier XML, puis sélectionnez Ouvrir.
Définir des points d’arrêt à partir des fenêtres du débogueur
Vous pouvez également définir des points d’arrêt à partir des fenêtres de débogueur Pile des appels et Désassemblage.
Définir un point d’arrêt dans la fenêtre Pile des appels
Pour arrêter l’exécution sur l’instruction ou la ligne à laquelle une fonction appelante renvoie, vous pouvez définir un point d’arrêt dans la fenêtre Pile des appels.
Pour définir un point d’arrêt dans la fenêtre Pile des appels :
Pour ouvrir la fenêtre Pile des appels, vous devez être en pause pendant le débogage. Sélectionnez Déboguer>Fenêtres>Pile des appels, ou appuyez sur Ctrl+Alt+C.
Dans la fenêtre Pile des appels, cliquez avec le bouton droit sur la fonction appelante et sélectionnez Point d’arrêt>Insérer un point d’arrêt, ou appuyez sur F9.
Un symbole de point d’arrêt s’affiche à côté du nom de l’appel de fonction, dans la marge de gauche de la pile des appels.
Le point d’arrêt de pile des appels s’affiche dans la fenêtre Points d’arrêt sous la forme d’une adresse, avec un emplacement de mémoire correspondant à la prochaine instruction exécutable de la fonction.
Le débogueur s’arrête sur l’instruction.
Pour plus d’informations sur la pile des appels, consultez Comment : utiliser la fenêtre Pile des appels.
Pour suivre visuellement les points d’arrêt pendant l’exécution du code, consultez Mapper des méthodes sur la pile des appels pendant le débogage.
Définir un point d’arrêt dans la fenêtre Désassemblage
Pour ouvrir la fenêtre Désassemblage, vous devez être en pause pendant le débogage. Sélectionnez Déboguer>Fenêtres>Désassemblage, ou appuyez sur Ctrl+Alt+D.
Dans la fenêtre Désassemblage, cliquez dans la marge gauche de l’instruction sur laquelle vous souhaitez vous arrêter. Vous pouvez également la sélectionner et appuyer sur F9, ou cliquer avec le bouton droit et sélectionner Point d’arrêt>Insérer un point d’arrêt.