Now we kill debugger on exit after test finished, with this patch we close debugger in proper way by control application for all GDB/MI tests.
Minor changes in VSCode protocol control applications in order make it more clean.
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void EnableBreakpoint(string bpName)
{
Breakpoint bp = DebuggeeInfo.Breakpoints[bpName];
// last checkpoint must provide "finish" as id or empty string ("") as next checkpoint id
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static MIDebugger MIDebugger = new MIDebugger();
public static string id1 = null;
public static string id2 = null;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void Continue()
{
Assert.Equal(MIResultClass.Running, MIDebugger.Request("-exec-continue").Class);
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static bool IsStoppedEvent(MIOutOfBandRecord record)
{
if (record.Type != MIOutOfBandRecordType.Async) {
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void Continue()
{
Assert.Equal(MIResultClass.Running, MIDebugger.Request("-exec-continue").Class);
Assert.Equal(MIResultClass.Done, Context.MIDebugger.Request("-exec-abort").Class);
Assert.Equal(MIResultClass.Error, Context.MIDebugger.Request("-thread-info").Class);
+
+ Context.DebuggerExit();
});
Thread.Sleep(10000);
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void EnableBreakpoint(string bpName)
{
Breakpoint bp = DebuggeeInfo.Breakpoints[bpName];
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static MIDebugger MIDebugger = new MIDebugger();
}
}
Assert.Equal(MIResultClass.Error, Context.MIDebugger.Request("6-exec-continue").Class);
Assert.Equal(MIResultClass.Done, Context.MIDebugger.Request("7-exec-abort").Class);
+
+ Context.DebuggerExit();
});
Thread.Sleep(10000);
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static bool IsStoppedEvent(MIOutOfBandRecord record)
{
if (record.Type != MIOutOfBandRecordType.Async) {
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void Continue()
{
Assert.Equal(MIResultClass.Running, MIDebugger.Request("-exec-continue").Class);
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void CheckVar(string varName)
{
// varName is equal to it value;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static bool IsStoppedEvent(MIOutOfBandRecord record)
{
if (record.Type != MIOutOfBandRecordType.Async) {
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static bool IsStoppedEvent(MIOutOfBandRecord record)
{
if (record.Type != MIOutOfBandRecordType.Async) {
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
+ lbp.FileName + ":" + lbp.NumLine).Class);
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static void Continue()
{
Assert.Equal(MIResultClass.Running, MIDebugger.Request("-exec-continue").Class);
while (!Context.testProcess.HasExited) {};
// killed by SIGKILL
Assert.NotEqual(0, Context.testProcess.ExitCode);
+
+ Context.DebuggerExit();
});
}
}
throw new NetcoreDbgTestCore.ResultNotSuccessException();
}
+ public static void DebuggerExit()
+ {
+ Assert.Equal(MIResultClass.Exit, Context.MIDebugger.Request("-gdb-exit").Class);
+ }
+
public static MIDebugger MIDebugger = new MIDebugger();
}
}
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
// last checkpoint must provide "finish" as id or empty string ("") as next checkpoint id
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
}
}
- public static void WasDisconnected()
- {
- bool wasExited = false;
- bool wasTerminated = false;
- foreach (var Event in VSCodeDebugger.EventList) {
- if (VSCodeDebugger.isResponseContainProperty(Event, "event", "exited")) {
- wasExited = true;
- }
- if (VSCodeDebugger.isResponseContainProperty(Event, "event", "terminated")) {
- wasTerminated = true;
- }
- }
- Assert.True(wasExited && wasTerminated);
- }
-
public static void Continue()
{
ContinueRequest continueRequest = new ContinueRequest();
Assert.True(VSCodeDebugger.Request(setBreakpointsRequest).Success);
}
- public static void Disconnect()
+ public static void WasExit()
+ {
+ bool wasExited = false;
+ bool wasTerminated = false;
+ foreach (var Event in VSCodeDebugger.EventList) {
+ if (VSCodeDebugger.isResponseContainProperty(Event, "event", "exited")) {
+ wasExited = true;
+ }
+ if (VSCodeDebugger.isResponseContainProperty(Event, "event", "terminated")) {
+ wasTerminated = true;
+ }
+ }
+ Assert.True(wasExited && wasTerminated);
+ }
+
+ public static void DebuggerExit()
{
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
Context.PrepareEnd();
Context.WasEntryPointHit();
Context.Continue();
-
- Context.Disconnect();
});
Label.Checkpoint("finish", "", () => {;
- Context.WasDisconnected();
+ Context.DebuggerExit();
+ Context.WasExit();
});
- // we should never reach this code
System.Threading.Thread.Sleep(30000);
+ // we should never reach this code
Console.WriteLine("A breakpoint \"bp\" is set on this line"); Label.Breakpoint("bp");
}
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {;
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}
}
{
string resJSON = VSCodeDebugger.Receive(-1);
Assert.True(VSCodeDebugger.isResponseContainProperty(resJSON, "event", "terminated"));
+ }
+ public static void DebuggerExit()
+ {
DisconnectRequest disconnectRequest = new DisconnectRequest();
disconnectRequest.arguments = new DisconnectArguments();
disconnectRequest.arguments.restart = false;
Label.Checkpoint("finish", "", () => {
Context.WasExit();
+ Context.DebuggerExit();
});
}