当发生异常时,您可以打印出StackTrace并查看它。
如果您想在没有例外的情况下获取StackTrace怎么办?
有办法做到这一点吗?
答案 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