GetValue() public method

public GetValue ( Mono.Debugger.Soft.FieldInfoMirror field ) : Mono.Debugger.Soft.Value
field Mono.Debugger.Soft.FieldInfoMirror
return Mono.Debugger.Soft.Value
Beispiel #1
0
        private void DoWalkObject(ObjectMirror value, Trace parent)
        {
            if (!value.IsCollected && !m_objects.Contains(value.Address))
            {
                m_objects.Add(value.Address);
                foreach (FieldInfoMirror field in value.Type.GetAllFields())
                {
                    if (!field.IsStatic && DoShouldWalkType(field.FieldType))
                    {
                        Log.WriteLine(TraceLevel.Verbose, "TraceRoots", "object {0}.{1} [{2}]", field.DeclaringType.FullName, field.Name, field.FieldType.FullName);
                        Log.Indent();

                        Value v = value.GetValue(field);
                        var child = new Trace(field.Name, field.FieldType.FullName, v);
                        DoWalkValue(v, child, field.Name);
                        parent.Children.Add(child);

                        Log.Unindent();
                    }
                }
            }
        }
Beispiel #2
0
        private static Value DoGetField(ObjectMirror mirror, string name, ThreadMirror thread)
        {
            Value result = null;

            FieldInfoMirror field = mirror.Type.ResolveField(name);
            if (field != null && field.ShouldEvaluate())
            {
                if (field.IsStatic)
                    if (field.HasCustomAttribute("System.ThreadStaticAttribute"))
                        result = field.DeclaringType.GetValue(field, thread);
                    else
                        result = field.DeclaringType.GetValue(field);
                else
                    result = mirror.GetValue(field);
            }

            return result;
        }