获取堆栈跟踪

6

当异常发生时,您可以打印出StackTrace并进行审核。

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

有没有一种方法可以做到这一点?

3个回答

9
您可以随时调用Environment.StackTrace来打印堆栈跟踪信息。
string tracktrace = System.Environment.StackTrace;

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:即使没有异常,这也可以工作--请参见.NET中如何打印当前堆栈跟踪而不引发任何异常


1

System.Environment.StackTrace是一个很棒的工具,但请注意您并不总是能得到您想要的结果,并且x86和x64平台之间存在差异,这可能会影响输出。在此处了解详细信息


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接