Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I get the method local variables through a stack trace in C#?

Tags:

c#

.net

I want to get a detailed log about my stack trace. I can get a StackFrame and then the method and then get all the parameters of that method. Just as the following code:

            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);
            }

But how could I get the local variables infomation within a method?

Could someone shed some light on me?

Many thanks.

like image 552
smwikipedia Avatar asked Apr 23 '10 06:04

smwikipedia


1 Answers

You might want to look into LocalVariableInfo.

Example fom MSDN // Get method body information.

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);
}
like image 184
Filip Ekberg Avatar answered Sep 20 '22 08:09

Filip Ekberg