Получение Stacktrace - PullRequest
       16

Получение Stacktrace

6 голосов
/ 07 марта 2009

Когда возникает исключение, вы можете распечатать StackTrace и просмотреть его.

Что если вы хотите получить StackTrace без исключений?

Есть ли способ сделать это?

Ответы [ 3 ]

9 голосов
/ 07 марта 2009

Когда вы ловите исключение, вы можете создать StackTrace объект и извлечь из него полезную информацию. Смотрите следующий пример:

        StackTrace st = new StackTrace(true);
        for(int i =0; i< st.FrameCount; i++ )
        {
            // Note that high up the call stack, there is only
            // one stack frame.
            StackFrame sf = st.GetFrame(i);
            Console.WriteLine();
            Console.WriteLine("High up the call stack, Method: {0}",
                sf.GetMethod());

            Console.WriteLine("High up the call stack, Line Number: {0}",
                sf.GetFileLineNumber());
        }

PS: это работает даже без исключения - см. Как напечатать текущую трассировку стека в .NET без исключения .

9 голосов
/ 07 марта 2009

Вы можете распечатать трассировку стека в любое время, вызвав Environment.StackTrace

string tracktrace = System.Environment.StackTrace;
1 голос
/ 07 марта 2009

System.Environment.StackTrace - потрясающий инструмент, но имейте в виду, что вы не всегда получаете то, что ищете, и существуют различия между платформами x86 и x64, которые могут повлиять на вывод. Гроди подробности здесь .

...