public GetValue ( Mono.Debugger.Soft.FieldInfoMirror field ) : Mono.Debugger.Soft.Value | ||
field | Mono.Debugger.Soft.FieldInfoMirror | |
Résultat | Mono.Debugger.Soft.Value |
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(); } } } }
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; }