Как получить трассировку стека в .NET в обычном исполнении? - PullRequest
10 голосов
/ 15 июля 2010

В VB .NET я знаю, что могу получить трассировку стека, взглянув на значение ex.StackTrace при обработке исключения. Как я могу получить функции в стеке, когда я не обрабатываю исключение? Я пытаюсь реализовать какую-то систему журналирования, чтобы записывать шаги, которые пользователь предпринимает до сбоя, чтобы помочь в отладке.

Ответы [ 3 ]

19 голосов
/ 16 июля 2010

Environment.StackTrace дает вам строку, но для получения более подробной информации и параметров используйте класс StackTrace.

Чтобы быть более конкретными, посмотрите параметры конструктора:

http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.stacktrace.aspx

Если вам нужна трассировка стека, начинающаяся с фрейма вызывающего (например, в функции регистрации: вы не хотите, чтобы все начиналось с MyLogMethod), попробуйте этоодин, который принимает параметр int, количество пропускаемых кадров.

http://msdn.microsoft.com/en-us/library/wybch8k4.aspx

Если вам нужна трассировка стека без информации об источнике (например, еслиВы не хотите предоставлять информацию о своем исходном коде), попробуйте это:

http://msdn.microsoft.com/en-us/library/6zh7csxz.aspx

Надеюсь, это поможет!

7 голосов
/ 16 июля 2010
System.Environment.StackTrace
7 голосов
/ 16 июля 2010
...