public static MonoObjectToString ( Thread thread, |
||
thread | Thread | |
obj | ||
flags | EvaluationFlags | |
timeout | int | |
result | string | |
return | EvaluationResult |
public void Main() { Process process = Start(); Assert.IsTrue(process.IsManaged); Assert.IsTrue(process.MainThread.IsStopped); Thread thread = process.MainThread; AssertStopped(thread, "main", "X.Main()"); AssertExecute("continue"); AssertHitBreakpoint(thread, "main2", "X.Main()"); TargetClassObject a = EvaluateExpression(thread, "a") as TargetClassObject; TargetClassObject b = EvaluateExpression(thread, "b") as TargetClassObject; Assert.IsTrue(a != null); Assert.IsTrue(b != null); string text; EE.EvaluationResult result; result = EE.MonoObjectToString(thread, a, EE.EvaluationFlags.None, 500, out text); if (result != ExpressionEvaluator.EvaluationResult.Ok) { Assert.Fail("Failed to print `a': got result {0}", result); } if (text != "Foo (3)") { Assert.Fail("Failed to print `a': got result {0}", text); } result = EE.MonoObjectToString(thread, b, EE.EvaluationFlags.None, 500, out text); if (result != EE.EvaluationResult.Timeout) { Assert.Fail("Failed to print `a': got result {0}", result); } AssertExecute("continue"); AssertTargetOutput("TEST: Foo (3) Foo (8)"); AssertTargetExited(thread.Process); }
string MonoObjectToString(TargetClassObject obj) { TargetClassType ctype = obj.Type; if ((ctype.Name == "System.Object") || (ctype.Name == "System.ValueType")) { return(null); } string text, dummy; EE.EvaluationResult result; if (ctype.DebuggerDisplayAttribute != null) { result = HandleDebuggerDisplay(Interpreter, CurrentThread, obj, ctype.DebuggerDisplayAttribute, -1, out text, out dummy); if (result == EE.EvaluationResult.Ok) { return(String.Format("{{ {0} }}", text)); } else if (result == EE.EvaluationResult.InvalidExpression) { if (text != null) { return(text); } } } result = EE.MonoObjectToString(CurrentThread, obj, EE.EvaluationFlags.None, -1, out text); if (result == EE.EvaluationResult.Ok) { return(String.Format("{{ \"{0}\" }}", text)); } return(null); }