【问题标题】:Getting the Stacktrace获取堆栈跟踪
【发布时间】:2010-10-11 21:08:19
【问题描述】:

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

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

有没有办法做到这一点?

【问题讨论】:

    标签: c# debugging stack-trace printstacktrace


    【解决方案1】:

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

    string tracktrace = System.Environment.StackTrace;
    

    【讨论】:

      【解决方案2】:

      当您捕获异常时,您可以构造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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-15
          • 2010-11-10
          • 2018-08-10
          • 2023-03-22
          • 1970-01-01
          相关资源
          最近更新 更多