获得Stacktrace

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

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

有没有办法做到这一点?

捕获exception时,可以构造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中打印当前堆栈跟踪,没有任何exception 。

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

 string tracktrace = System.Environment.StackTrace; 

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