Afficher la pile des appels et utiliser la fenêtre Pile des appels dans le débogueur

La fenêtre Pile des appels permet d’afficher les appels de fonctions ou de procédures actuellement dans la pile. La fenêtre Pile des appels montre l’ordre dans lequel les méthodes et les fonctions sont appelées. La pile des appels est un bon moyen d’examiner et de comprendre le flux d’exécution d’une application.

Lorsque les symboles de débogage ne sont pas disponibles pour une partie d’une pile des appels, la fenêtre Pile des appels peut ne pas être capable d’afficher des informations correctes pour cette partie de la pile des appels et afficher à la place :

[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]

Notes

Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites ici, en fonction de vos paramètres actifs ou de l'édition utilisée. Pour modifier vos paramètres, cliquez sur Importation et exportation de paramètres dans le menu Outils. Consultez la section Réinitialiser tous les paramètres. La fenêtre Pile des appels est similaire à la perspective Débogage dans certains IDE, comme Eclipse.

Afficher la pile des appels dans le débogueur

Pendant le débogage, dans le menu Déboguer, sélectionnez Windows > Pile des appels ou appuyez sur ctrl+alt+C.

Screenshot showing the Call Stack Window. Une flèche jaune identifie le frame de pile où le pointeur d’exécution se trouve actuellement. Par défaut, les informations de ce frame de pile s’affichent dans les fenêtres sources, Locaux, Autos, Espion et Désassemblage. Pour remplacer le contexte du débogueur par un autre frame de la pile, basculez vers un autre frame de pile.

Screenshot showing the Call Stack Window.

Une flèche jaune identifie le frame de pile où le pointeur d'exécution se trouve actuellement. Par défaut, les informations de ce frame de pile s’affichent dans les fenêtres sources, Locaux, Autos, Espion et Désassemblage. Pour remplacer le contexte du débogueur par un autre frame de la pile, basculez vers un autre frame de pile.

Vous pouvez également afficher les trames de pile d’exceptions dans la pile des appels lors du débogage. Pour plus d’informations, consultez Afficher la pile des appels dans l’assistance d’exception.

Afficher le code non-utilisateur dans la fenêtre Pile des appels

Pour voir le code externe ou non-utilisateur, faites basculer le bouton Montrer le code externe, ou bien cliquez avec le bouton droit sur la fenêtre Pile des appels, puis sélectionnez Montrer le code externe.

Pour voir le code externe ou non-utilisateur, faites basculer le bouton Montrer le code externe, ou bien cliquez avec le bouton droit sur la fenêtre Pile des appels, puis sélectionnez Montrer le code externe.

Le code non utilisateur est tout code qui n’est pas affiché lorsque l’option Uniquement mon code est activée. Dans le code managé, les trames de code non utilisateur sont masquées par défaut. La notation suivante apparaît à la place des trames de code non utilisateur :

[<External Code>]

Basculer vers un autre frame de pile (modifier le contexte du débogueur)

  1. Dans la fenêtre Pile des appels, cliquez avec le bouton droit sur le frame dont vous voulez afficher le code et les données.

    Vous pouvez également double-cliquer sur un cadre dans la fenêtre Pile des appels pour basculer vers ce frame.

  2. Sélectionnez Basculer vers le frame.

    Une flèche verte avec extrémité recourbée apparaît à côté du frame de pile sélectionné. Le pointeur d'exécution reste dans le frame d'origine, qui est toujours identifié par la flèche jaune. Si vous sélectionnez Pas à pas ou Continuer dans le menu Déboguer, l’exécution se poursuivra dans le frame d’origine, et non dans le frame sélectionné.

Faites basculer le bouton Voir tous les threads pour voir tous les threads associés dans la fenêtre Parallel Stack.

Vous pouvez rechercher des frames de pile d’appels pertinents en tapant des termes de recherche appropriés dans la zone de recherche située en haut à gauche de la fenêtre Pile des appels. Les frames de pile d’appels pertinents sont mises en surbrillance.

Afficher le code source d’une fonction dans la pile des appels

Dans la fenêtre Pile des appels, cliquez avec le bouton droit sur la fonction dont vous voulez afficher le code source, puis sélectionnez Atteindre le code source.

Exécuter jusqu’à une fonction spécifique de la fenêtre Pile des appels

Dans la fenêtre Pile des appels, cliquez avec le bouton droit sur le nom de la fonction puis choisissez Exécuter jusqu’au curseur.

Définir un point d’arrêt sur le point de sortie d’un appel de fonction

Consultez Définir un point d’arrêt sur une fonction de pile d’appels.

Afficher des appels échangés avec d’autres threads

Cliquez avec le bouton droit sur la fenêtre Pile des appels, puis sélectionnez Inclure les appels échangés avec d’autres threads.

Assurer le suivi visuel de la pile des appels

Dans Visual Studio Enterprise (uniquement), vous pouvez afficher les cartes de code pour la pile des appels lors du débogage.

Dans la fenêtre Pile des appels, ouvrez le menu contextuel. Sélectionnez Afficher la pile d’appels sur la carte de code (Ctrl + Shift + `).

Pour plus d’informations, consultez Mapper les méthodes sur la pile des appels lors du débogage.

Show Call Stack on Code Map

Afficher le code de désassemblage d’une fonction dans la pile des appels (C#, C++, Visual Basic, F#)

Dans la fenêtre Pile des appels, cliquez avec le bouton droit sur la fonction dont vous voulez afficher le code machine, puis sélectionnez Atteindre le code machine.

Modifier l’affichage des informations facultatives

Cliquez avec le bouton droit dans la fenêtre Pile des appels et définissez ou désactivez Afficher <les informations souhaitées>.

Autodécompiler le code externe .NET

À partir de la version 17.7 de Visual Studio 2022, vous pouvez décompiler automatiquement le code .NET en double-cliquant sur du code externe dans la fenêtre de la pile d’appels. Pour plus d’informations, veuillez consulter la rubrique Générer du code source à partir des assemblies .NET lors du débogage.

Charger des symboles pour un module (C#, C++, Visual Basic, F#)

Dans la fenêtre Pile des appels, vous pouvez charger des symboles de débogage pour du code qui ne possède actuellement aucun symbole chargé. Ces symboles peuvent être des symboles .NET ou système téléchargés à partir des serveurs de symboles publics de Microsoft ou des symboles situés dans un chemin d’accès aux symboles sur l’ordinateur que vous déboguez.

Consultez Spécifier les fichiers de symbole (.pdb) et les fichiers sources.

Pour charger des symboles

  1. Dans la fenêtre Pile des appels, cliquez avec le bouton droit sur le frame de pile pour lequel des symboles ne sont pas chargés. La frame est alors grisée.

  2. Déplacez la souris sur Charger les symboles, puis sélectionnez Serveurs de symboles Microsoft (le cas échéant) ou allez jusqu’au chemin d’accès aux symboles.

Pour définir le chemin d'accès aux symboles

  1. Dans la fenêtre Pile des appels, choisissez Paramètres des symboles dans le menu contextuel.

    La boîte de dialogue Options s’ouvre et la page Symboles s’affiche.

  2. Sélectionnez Paramètres des symboles.

  3. Dans la boîte de dialogue Options, cliquez sur l’icône de dossier.

    Un curseur apparaît dans la zone Emplacements du fichier de symboles (.pdb).

  4. Entrez un nom de chemin d’accès au répertoire correspondant à l’emplacement de symboles sur l’ordinateur que vous déboguez. Pour le débogage local et distant, il s’agit d’un chemin d’accès sur votre ordinateur local.

  5. Sélectionnez OK pour fermer la boîte de dialogue Options.