我可以通过C#中的堆栈跟踪获取方法局部变量吗?

我想得到一个关于我的堆栈跟踪的详细日志。 我可以获得一个StackFrame,然后获取该方法,然后获取该方法的所有参数。 就像下面的代码一样:

StackTrace st = new StackTrace(); StackFrame[] sfs = st.GetFrames(); foreach (StackFrame sf in sfs) { MethodBase method = sf.GetMethod(); ParameterInfo[] pis = method.GetParameters(); foreach (ParameterInfo pi in pis) { .... } Console.WriteLine(method.Name); } 

但是如何在方法中获取局部变量信息呢?

有人会对我有所了解吗?

非常感谢。

您可能想要查看LocalVariableInfo 。

MSDN示例 //获取方法体信息。

 MethodInfo mi = typeof(Example).GetMethod("MethodBodyExample"); MethodBody mb = mi.GetMethodBody(); Console.WriteLine("\r\nMethod: {0}", mi); // Display the general information included in the // MethodBody object. Console.WriteLine(" Local variables are initialized: {0}", mb.InitLocals); foreach (LocalVariableInfo lvi in mb.LocalVariables) { Console.WriteLine("Local variable: {0}", lvi); }