Commit ad6451bb authored by hjk's avatar hjk

Debugger: Remove the InferiorExited state

There are now several possible orders of events between sending a 'kill'
and receiving something that indicated a properly shut down inferior.
Coordinating the InferiorExited state during engine ramp down is not
worthwhile as that state had only a forced transition to InferiorShutdownOk
anyway. For the user (and user code), only the fact that ramp down is
finished is interesting.

Change-Id: Ic22131d5a1066dc62bd069f532c28b773f231088
Reviewed-by: default avatarChristian Stenger <christian.stenger@theqtcompany.com>
parent 13daaaac
......@@ -102,8 +102,6 @@ enum DebuggerState
InferiorStopOk, // Debuggee stopped
InferiorStopFailed, // Debuggee not stopped, will kill debugger
InferiorExitOk,
InferiorShutdownRequested,
InferiorShutdownFailed,
InferiorShutdownOk,
......
......@@ -382,7 +382,6 @@ const char *DebuggerEngine::stateName(int s)
SN(InferiorStopRequested)
SN(InferiorStopOk)
SN(InferiorStopFailed)
SN(InferiorExitOk)
SN(InferiorShutdownRequested)
SN(InferiorShutdownOk)
SN(InferiorShutdownFailed)
......@@ -721,19 +720,16 @@ static bool isAllowedTransition(DebuggerState from, DebuggerState to)
case InferiorRunOk:
return to == InferiorStopRequested
|| to == InferiorStopOk // A spontaneous stop.
|| to == InferiorExitOk;
|| to == InferiorShutdownOk; // A spontaneous exit.
case InferiorStopRequested:
return to == InferiorStopOk || to == InferiorStopFailed;
case InferiorStopOk:
return to == InferiorRunRequested || to == InferiorShutdownRequested
|| to == InferiorStopOk || to == InferiorExitOk;
|| to == InferiorStopOk || to == InferiorShutdownOk;
case InferiorStopFailed:
return to == EngineShutdownRequested;
case InferiorExitOk:
return to == InferiorShutdownOk;
case InferiorUnrunnable:
return to == InferiorShutdownRequested;
case InferiorShutdownRequested:
......@@ -1201,7 +1197,6 @@ void DebuggerEngine::notifyInferiorExited()
#endif
showMessage(_("NOTE: INFERIOR EXITED"));
d->resetLocation();
setState(InferiorExitOk);
setState(InferiorShutdownOk);
if (isMasterEngine())
d->queueShutdownEngine();
......@@ -1364,7 +1359,6 @@ bool DebuggerEngine::debuggerActionsEnabled(DebuggerState state)
case EngineRunFailed:
case InferiorSetupFailed:
case InferiorStopFailed:
case InferiorExitOk:
case InferiorShutdownRequested:
case InferiorShutdownOk:
case InferiorShutdownFailed:
......@@ -1428,7 +1422,6 @@ void DebuggerEngine::quitDebugger()
break;
case EngineRunFailed:
case DebuggerFinished:
case InferiorExitOk:
case InferiorShutdownOk:
break;
case InferiorSetupRequested:
......
......@@ -275,7 +275,7 @@
{notifyInferior- + + +
Exited} + + +
+ + + +
InferiorExitOk + + +
+ + + +
+ + + +
InferiorShutdownOk InferiorShutdownFailed +
* * +
......
......@@ -135,7 +135,6 @@ static bool stateAcceptsGdbCommands(DebuggerState state)
case InferiorStopFailed:
case InferiorSetupOk:
case EngineRunFailed:
case InferiorExitOk:
case InferiorRunFailed:
case EngineShutdownOk:
case EngineShutdownFailed:
......@@ -1876,11 +1875,14 @@ void GdbEngine::shutdownInferior()
void GdbEngine::handleInferiorShutdown(const DebuggerResponse &response)
{
CHECK_STATE(InferiorShutdownRequested);
if (response.resultClass == ResultDone) {
notifyInferiorShutdownOk();
// We'll get async thread-group-exited responses to which we react.
// Nothing to do here.
// notifyInferiorShutdownOk();
return;
}
// "kill" got stuck, or similar.
CHECK_STATE(InferiorShutdownRequested);
QByteArray ba = response.data["msg"].data();
if (ba.contains(": No such file or directory.")) {
// This happens when someone removed the binary behind our back.
......
......@@ -649,12 +649,6 @@ void QmlCppEngine::slaveEngineStateChanged
notifyInferiorStopFailed();
break;
}
case InferiorExitOk: {
// InferiorExitOk will be called through notifyInferiorExited
// when InferiorShutDownOk is reached
qmlEngine()->quitDebugger();
break;
}
case InferiorShutdownRequested: {
if (state() == InferiorStopOk) {
setState(InferiorShutdownRequested);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment