获得Stacktrace

时间:2009-03-07 00:12:59

标签: c# debugging stack-trace printstacktrace

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

如果您想在没有例外的情况下获取StackTrace怎么办?

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:9)

您可以随时拨打Environment.StackTrace

打印出堆栈跟踪
string tracktrace = System.Environment.StackTrace;

答案 1 :(得分: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

答案 2 :(得分:1)

System.Environment.StackTrace是一个很棒的工具,但请注意,您并不总是得到您正在寻找的东西,x86和x64平台之间可能会影响输出。 Grody details here