diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 213f6c81dc91c083dec522e50467863d1a0a3911..9c0a64f8e48adaa5a030dc85a5af15b381e4cb3e 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -263,8 +263,10 @@ public slots: } void queueFinishDebugger() { - m_engine->setState(DebuggerFinished, true); - m_engine->showMessage(_("QUEUE: SHUTDOWN INFERIOR")); + QTC_ASSERT(state() == EngineShutdownOk + || state() == EngineShutdownFailed, qDebug() << state()); + m_engine->setState(DebuggerFinished); + m_engine->showMessage(_("QUEUE: FINISH DEBUGGER")); QTimer::singleShot(0, this, SLOT(doFinishDebugger())); } @@ -1248,8 +1250,7 @@ void DebuggerEngine::notifyInferiorIll() void DebuggerEnginePrivate::doShutdownEngine() { - QTC_ASSERT(state() == EngineShutdownRequested - || state() == InferiorShutdownOk, qDebug() << state()); + QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state()); m_targetState = DebuggerFinished; m_engine->showMessage(_("CALL: SHUTDOWN ENGINE")); m_engine->shutdownEngine(); @@ -1260,7 +1261,7 @@ void DebuggerEngine::notifyEngineShutdownOk() showMessage(_("NOTE: ENGINE SHUTDOWN OK")); QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state()); setState(EngineShutdownOk); - QTimer::singleShot(0, d, SLOT(doFinishDebugger())); + d->queueFinishDebugger(); } void DebuggerEngine::notifyEngineShutdownFailed() @@ -1268,16 +1269,14 @@ void DebuggerEngine::notifyEngineShutdownFailed() showMessage(_("NOTE: ENGINE SHUTDOWN FAILED")); QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state()); setState(EngineShutdownFailed); - QTimer::singleShot(0, d, SLOT(doFinishDebugger())); + d->queueFinishDebugger(); } void DebuggerEnginePrivate::doFinishDebugger() { m_engine->showMessage(_("NOTE: FINISH DEBUGGER")); - QTC_ASSERT(state() == EngineShutdownOk - || state() == EngineShutdownFailed, qDebug() << state()); + QTC_ASSERT(state() == DebuggerFinished, qDebug() << state()); m_engine->resetLocation(); - m_engine->setState(DebuggerFinished); m_runControl->debuggingFinished(); } @@ -1303,6 +1302,7 @@ void DebuggerEngine::notifyEngineIll() void DebuggerEngine::notifyEngineSpontaneousShutdown() { showMessage(_("NOTE: ENGINE SPONTANEOUS SHUTDOWN")); + setState(EngineShutdownOk, true); d->queueFinishDebugger(); }