Share via


Inspection du frame de pile, exemple

Mise à jour : novembre 2007

Cet exemple montre comment récupérer par programme des informations sur la pile des appels à tout point du code exécutant. La pile vous permet de déterminer la séquence des procédures que l'application a exécutée avant d'arriver à la procédure actuelle.

Pour obtenir des exemples et leurs instructions d'installation

  • Effectuez une ou plusieurs des opérations suivantes :

    • Dans le menu ? (Aide), cliquez sur Exemples.

      Le fichier Readme contient des informations sur les exemples.

    • Accédez au site Web Exemples Visual Studio 2008. La version la plus récente des exemples est disponible sur ce site.

    • Recherchez les exemples sur l'ordinateur sur lequel Visual Studio est installé. Par défaut, les exemples et un fichier Readme sont installés sous lecteur:\Program Files\Microsoft Visual Studio 9.0\Samples\1036. Pour les versions Express de Visual Studio, tous les exemples sont disponibles en ligne.

Pour plus d'informations, consultez Recherche des fichiers d'exemple.

.

Note de sécurité :

Cet exemple de code est destiné à illustrer un concept ; il présente uniquement le code qui se rapporte spécifiquement à ce concept. Il est possible qu'il ne réponde pas aux exigences de sécurité d'un environnement spécifique, et ne doit pas être utilisé exactement comme indiqué. Nous vous recommandons d'ajouter du code de sécurité et de gestion des erreurs afin de renforcer la sécurité et la fiabilité de vos projets. Microsoft fournit cet exemple de code « EN L'ÉTAT » sans aucune garantie.

Pour exécuter cet exemple

  • Appuyez sur F5.

Démonstrations

.NET Framework fournit la fonctionnalité en tant qu'élément de la classe StackFrame. L'exemple illustre deux autres classes : StackTrace et MethodInfo. Le constructeur sans paramètre de StackTrace retourne un jeu complet d'objets StackFrame, fournissant des informations provenant du démarrage de votre application. Vous pouvez également utiliser le constructeur StackTrace qui prend une instance de Exception. Ce constructeur renvoie des informations de traçage de la pile au code qui a déclenché l'exception.

Le gestionnaire d'événements pour le bouton Test Procedure Stack contient le code pour appeler plusieurs méthodes qui résultent en une pile de plusieurs niveaux. Cliquer sur le bouton Test Procedure Stack appelle ProcA, qui appelle ProcB. ProcB appelle la procédure GetFullStackFrameInfo, en passant dans un nouvel objet StackTrace :

GetFullStackFrameInfo(New StackTrace()) 

Dans la procédure GetFullStackFrameInfo, le code utilise la propriété FrameCount de l'objet StackTrace pour récupérer le nombre total de frames de pile, en travaillant antérieurement à la procédure actuelle. La procédure ajoute ensuite des informations concernant chaque frame de pile à la zone de liste de l'exemple, en appelant la méthode GetFrame pour récupérer un objet de frame de pile indexé.

La procédure GetStackFrameInfo appelle GetFrame sur l'objet StackFrame que le code lui a envoyé, puis récupère les propriétés de l'objet MethodInfo pour afficher les informations relatives à la procédure dans la zone de liste.

Le gestionnaire d'événements pour le bouton Test Exception Handling génère une erreur en bas de la pile de plusieurs couches. Le code déclenche une exception et passe cette exception au constructeur pour l'objet StackFrame.

Voir aussi

Référence

System.Diagnostics

StackFrame

System.Reflection

MethodInfo

FrameCount