Как получить трассировку стека в .NET при нормальном выполнении?

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

Ответ 1

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

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

Ответ 3

System.Environment.StackTrace