获得Stacktrace

6 c# debugging stack-trace printstacktrace

当Exception发生时,您可以打印出StackTrace并查看它.

如果你想在没有异常的情况下获得StackTrace怎么办?

有没有办法做到这一点?

cgr*_*eno 9

您可以通过调用Environment.StackTrace随时打印出栈跟踪

string tracktrace = System.Environment.StackTrace;
Run Code Online (Sandbox Code Playgroud)


Dav*_*uda 9

捕获异常时,可以构造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());
        }
Run Code Online (Sandbox Code Playgroud)

PS:这甚至没有例外 - 请参阅如何在.NET中打印当前堆栈跟踪,没有任何异常.