Когда возникает исключение, вы можете распечатать StackTrace и просмотреть его.
Что если вы хотите получить StackTrace без исключений?
Есть ли способ сделать это?
Когда вы ловите исключение, вы можете создать 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 без исключения .
Вы можете распечатать трассировку стека в любое время, вызвав Environment.StackTrace
string tracktrace = System.Environment.StackTrace;
System.Environment.StackTrace - потрясающий инструмент, но имейте в виду, что вы не всегда получаете то, что ищете, и существуют различия между платформами x86 и x64, которые могут повлиять на вывод. Гроди подробности здесь .