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

smw*_*dia 7 .net 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);
            }
Run Code Online (Sandbox Code Playgroud)

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

有人会对我有所了解吗?

非常感谢.

Fil*_*erg 3

您可能想查看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);
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,菲利普。我只想像调试器一样记录和检查调用堆栈信息。 (3认同)