6

当发生异常时,您可以打印出 StackTrace 并查看它。

如果您想在不发生异常的情况下获取 StackTrace 怎么办?

有没有办法做到这一点?

4

3 回答 3

9

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

string tracktrace = System.Environment.StackTrace;
于 2009-03-07T00:13:45.517 回答
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());
        }

PS:即使没有异常也可以使用 - 请参阅How to print the current stack trace in .NET without any exception

于 2009-03-07T00:23:42.323 回答
1

System.Environment.StackTrace 是一个很棒的工具,但请注意,您并不总能得到您想要的东西,而且 x86 和 x64 平台之间存在可能影响输出的差异。 格罗迪细节在这里

于 2009-03-07T01:04:52.227 回答