412 votes

Comment imprimer la trace actuelle Stack dans .NET sans exception?

J'ai un code C # régulier. Je n'ai aucune exception . Je veux enregistrer par programme la trace de pile en cours à des fins de débogage. Exemple:

 public void executeMethod() 
{
    logStackTrace();
    method();
}
 

471voto

Spence Points 15057

Jetez un oeil à l'espace de noms System.Diagnostics. Beaucoup de goodies là-bas!

 System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();
 

C'est vraiment bien d'avoir un coup de main pour apprendre ce qui se passe sous le capot.

Je vous recommande d'examiner les solutions de journalisation (telles que NLog, log4net ou les modèles Microsoft et les pratiques de la bibliothèque d'entreprise) qui peuvent atteindre vos objectifs, puis certains. Bonne chance mec!

260voto

larsm Points 5337

Une alternative à System.Diagnostics.StackTrace est d'utiliser System.Environment.StackTrace qui renvoie une représentation sous forme de chaîne de la pile.

39voto

Brian Rasmussen Points 68853

Il y a deux façons de faire ça. Le System.Diagnostics.StackTrace() vous donnera une trace de pile pour le fil en cours. Si vous avez une référence à une instance Thread , vous pouvez obtenir la trace de la pile pour cela via la version surchargée de StackTrace() .

Vous pouvez également vérifier la question de dépassement de pile Comment obtenir la pile de données du thread non courant? .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X