Ответ 1
System.Environment.StackTrace
Покажет текущий стек как строку.
Вы также можете использовать класс StackTrace
, как указывали другие, если у вас есть более сложные потребности.
Ищете способ программно сбрасывать стек вызовов и приложение .net Win Forms, когда когда-либо попадает раздел кода. Его кое-что, с чем я не сталкивался раньше, но сохранит мне некоторое время отладки.
Обновление: Забыл добавить, сколько накладных расходов это добавит в приложение, т.е. значительно замедлит его.
System.Environment.StackTrace
Покажет текущий стек как строку.
Вы также можете использовать класс StackTrace
, как указывали другие, если у вас есть более сложные потребности.
Вы можете использовать:
StackTrace callStack = new StackTrace();
И для доступа к определенному кадру стека:
StackFrame frame = callStack.GetFrame(1);
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
Из MSDN:
using System.Diagnostics;
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());
}
На самом деле это не замедлит ваше приложение, потому что информация о вызове не должна генерироваться, она присутствует во время всей обработки вашего кода.