寻找一种方法,以便在遇到一段代码时以编程方式转储调用堆栈和.net Win Forms应用程序。这是我之前没有遇到的事情,但会节省一些调试时间。
更新:忘记添加,这将为应用程序增加多少开销,即它会大大减慢它。
答案 0 :(得分:57)
System.Environment.StackTrace
将以字符串形式提供当前堆栈。
如果您有更高级的需求,您也可以使用其他人指出的StackTrace
课程。
答案 1 :(得分:12)
您可以使用:
StackTrace callStack = new StackTrace();
然后访问特定的堆栈框架:
StackFrame frame = callStack.GetFrame(1);
答案 2 :(得分:1)
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
来自MSDN:
using System.Diagnostics;
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());
}
答案 3 :(得分:-3)
实际上它不会减慢您的应用程序速度,因为不能生成callstack信息,它会在整个代码处理过程中出现。