Подтвердить что ты не робот

Сбрасывание стека вызовов программно

Ищете способ программно сбрасывать стек вызовов и приложение .net Win Forms, когда когда-либо попадает раздел кода. Его кое-что, с чем я не сталкивался раньше, но сохранит мне некоторое время отладки.

Обновление: Забыл добавить, сколько накладных расходов это добавит в приложение, т.е. значительно замедлит его.

4b9b3361

Ответ 1

System.Environment.StackTrace

Покажет текущий стек как строку.

Вы также можете использовать класс StackTrace, как указывали другие, если у вас есть более сложные потребности.

Ответ 2

Вы можете использовать:

StackTrace callStack = new StackTrace();

И для доступа к определенному кадру стека:

StackFrame frame = callStack.GetFrame(1);

Ответ 3

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());
        }

Ответ 4

На самом деле это не замедлит ваше приложение, потому что информация о вызове не должна генерироваться, она присутствует во время всей обработки вашего кода.