Debugger: Simplify queue/do pairs

The functionality has been needed for asynchronous processing
which are in RunWorkers nowadays, where the functionality is
provided by the general RunControl framework.

Change-Id: Id18f693935cd6faf5b25883dfeaace0dd691f6a7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2017-10-06 08:49:36 +02:00
parent d3c1dfe45a
commit abe755cfd8

View File

@@ -235,57 +235,23 @@ public:
void doShutdownEngine(); void doShutdownEngine();
void doShutdownInferior(); void doShutdownInferior();
void doInterruptInferior(); void doInterruptInferior();
void doFinishDebugger();
void reloadDisassembly() void reloadDisassembly()
{ {
m_disassemblerAgent.reload(); m_disassemblerAgent.reload();
} }
void queueSetupEngine() void doFinishDebugger()
{
m_engine->setState(EngineSetupRequested);
m_engine->showMessage("QUEUE: SETUP ENGINE");
QTimer::singleShot(0, this, &DebuggerEnginePrivate::doSetupEngine);
}
void queueSetupInferior()
{
m_engine->setState(InferiorSetupRequested);
m_engine->showMessage("QUEUE: SETUP INFERIOR");
QTimer::singleShot(0, this, &DebuggerEnginePrivate::doSetupInferior);
}
void queueRunEngine()
{
m_engine->setState(EngineRunRequested);
m_engine->showMessage("QUEUE: RUN ENGINE");
QTimer::singleShot(0, this, &DebuggerEnginePrivate::doRunEngine);
}
void queueShutdownEngine()
{
m_engine->setState(EngineShutdownRequested);
m_engine->showMessage("QUEUE: SHUTDOWN ENGINE");
QTimer::singleShot(0, this, &DebuggerEnginePrivate::doShutdownEngine);
}
void queueShutdownInferior()
{
m_engine->setState(InferiorShutdownRequested);
m_engine->showMessage("QUEUE: SHUTDOWN INFERIOR");
QTimer::singleShot(0, this, &DebuggerEnginePrivate::doShutdownInferior);
}
void queueFinishDebugger()
{ {
QTC_ASSERT(state() == EngineShutdownOk QTC_ASSERT(state() == EngineShutdownOk
|| state() == EngineShutdownFailed, qDebug() << state()); || state() == EngineShutdownFailed, qDebug() << state());
m_engine->setState(DebuggerFinished); m_engine->setState(DebuggerFinished);
resetLocation(); resetLocation();
if (isMasterEngine()) { if (isMasterEngine()) {
m_engine->showMessage("QUEUE: FINISH DEBUGGER"); m_engine->showMessage("NOTE: FINISH DEBUGGER");
QTimer::singleShot(0, this, &DebuggerEnginePrivate::doFinishDebugger); QTC_ASSERT(state() == DebuggerFinished, qDebug() << m_engine << state());
if (isMasterEngine() && m_runTool)
m_runTool->debuggingFinished();
} }
} }
@@ -557,7 +523,7 @@ void DebuggerEngine::start()
// }); // });
// } // }
d->queueSetupEngine(); d->doSetupEngine();
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << this << state()); QTC_ASSERT(state() == EngineSetupRequested, qDebug() << this << state());
} }
@@ -712,13 +678,13 @@ static bool isAllowedTransition(DebuggerState from, DebuggerState to)
void DebuggerEngine::setupSlaveEngine() void DebuggerEngine::setupSlaveEngine()
{ {
QTC_CHECK(state() == DebuggerNotReady); QTC_CHECK(state() == DebuggerNotReady);
d->queueSetupEngine(); d->doSetupEngine();
} }
void DebuggerEnginePrivate::doSetupEngine() void DebuggerEnginePrivate::doSetupEngine()
{ {
m_engine->setState(EngineSetupRequested);
m_engine->showMessage("CALL: SETUP ENGINE"); m_engine->showMessage("CALL: SETUP ENGINE");
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << m_engine << state());
m_engine->setupEngine(); m_engine->setupEngine();
} }
@@ -739,20 +705,20 @@ void DebuggerEngine::notifyEngineSetupOk()
setState(EngineSetupOk); setState(EngineSetupOk);
if (isMasterEngine() && runTool()) { if (isMasterEngine() && runTool()) {
runTool()->reportStarted(); runTool()->reportStarted();
d->queueSetupInferior(); d->doSetupInferior();
} }
} }
void DebuggerEngine::setupSlaveInferior() void DebuggerEngine::setupSlaveInferior()
{ {
QTC_CHECK(state() == EngineSetupOk); QTC_CHECK(state() == EngineSetupOk);
d->queueSetupInferior(); d->doSetupInferior();
} }
void DebuggerEnginePrivate::doSetupInferior() void DebuggerEnginePrivate::doSetupInferior()
{ {
m_engine->setState(InferiorSetupRequested);
m_engine->showMessage("CALL: SETUP INFERIOR"); m_engine->showMessage("CALL: SETUP INFERIOR");
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << m_engine << state());
m_progress.setProgressValue(250); m_progress.setProgressValue(250);
m_engine->setupInferior(); m_engine->setupInferior();
} }
@@ -764,7 +730,7 @@ void DebuggerEngine::notifyInferiorSetupFailed()
showStatusMessage(tr("Setup failed.")); showStatusMessage(tr("Setup failed."));
setState(InferiorSetupFailed); setState(InferiorSetupFailed);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEngine::notifyInferiorSetupOk() void DebuggerEngine::notifyInferiorSetupOk()
@@ -778,20 +744,20 @@ void DebuggerEngine::notifyInferiorSetupOk()
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << this << state()); QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << this << state());
setState(InferiorSetupOk); setState(InferiorSetupOk);
if (isMasterEngine()) if (isMasterEngine())
d->queueRunEngine(); d->doRunEngine();
} }
void DebuggerEngine::runSlaveEngine() void DebuggerEngine::runSlaveEngine()
{ {
QTC_ASSERT(isSlaveEngine(), return); QTC_ASSERT(isSlaveEngine(), return);
QTC_CHECK(state() == InferiorSetupOk); QTC_CHECK(state() == InferiorSetupOk);
d->queueRunEngine(); d->doRunEngine();
} }
void DebuggerEnginePrivate::doRunEngine() void DebuggerEnginePrivate::doRunEngine()
{ {
m_engine->setState(EngineRunRequested);
m_engine->showMessage("CALL: RUN ENGINE"); m_engine->showMessage("CALL: RUN ENGINE");
QTC_ASSERT(state() == EngineRunRequested, qDebug() << m_engine << state());
m_progress.setProgressValue(300); m_progress.setProgressValue(300);
m_engine->runEngine(); m_engine->runEngine();
} }
@@ -816,7 +782,7 @@ void DebuggerEngine::notifyEngineRunFailed()
showStatusMessage(tr("Run failed.")); showStatusMessage(tr("Run failed."));
setState(EngineRunFailed); setState(EngineRunFailed);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEngine::notifyEngineRunAndInferiorRunOk() void DebuggerEngine::notifyEngineRunAndInferiorRunOk()
@@ -869,7 +835,7 @@ void DebuggerEngine::notifyInferiorRunFailed()
setState(InferiorRunFailed); setState(InferiorRunFailed);
setState(InferiorStopOk); setState(InferiorStopOk);
if (isDying()) if (isDying())
d->queueShutdownInferior(); d->doShutdownInferior();
} }
void DebuggerEngine::notifyInferiorStopOk() void DebuggerEngine::notifyInferiorStopOk()
@@ -886,7 +852,7 @@ void DebuggerEngine::notifyInferiorStopOk()
setState(InferiorStopOk); setState(InferiorStopOk);
} }
if (state() == InferiorStopOk || state() == InferiorStopFailed) if (state() == InferiorStopOk || state() == InferiorStopFailed)
d->queueShutdownInferior(); d->doShutdownInferior();
showMessage("NOTE: ... IGNORING STOP MESSAGE"); showMessage("NOTE: ... IGNORING STOP MESSAGE");
return; return;
} }
@@ -911,7 +877,7 @@ void DebuggerEngine::notifyInferiorStopFailed()
QTC_ASSERT(state() == InferiorStopRequested, qDebug() << this << state()); QTC_ASSERT(state() == InferiorStopRequested, qDebug() << this << state());
setState(InferiorStopFailed); setState(InferiorStopFailed);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEnginePrivate::doInterruptInferior() void DebuggerEnginePrivate::doInterruptInferior()
@@ -926,8 +892,8 @@ void DebuggerEnginePrivate::doInterruptInferior()
void DebuggerEnginePrivate::doShutdownInferior() void DebuggerEnginePrivate::doShutdownInferior()
{ {
m_engine->setState(InferiorShutdownRequested);
//QTC_ASSERT(isMasterEngine(), return); //QTC_ASSERT(isMasterEngine(), return);
QTC_ASSERT(state() == InferiorShutdownRequested, qDebug() << m_engine << state());
resetLocation(); resetLocation();
m_engine->showMessage("CALL: SHUTDOWN INFERIOR"); m_engine->showMessage("CALL: SHUTDOWN INFERIOR");
m_engine->shutdownInferior(); m_engine->shutdownInferior();
@@ -940,7 +906,7 @@ void DebuggerEngine::notifyInferiorShutdownOk()
d->m_lastGoodState = DebuggerNotReady; // A "neutral" value. d->m_lastGoodState = DebuggerNotReady; // A "neutral" value.
setState(InferiorShutdownOk); setState(InferiorShutdownOk);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEngine::notifyInferiorShutdownFailed() void DebuggerEngine::notifyInferiorShutdownFailed()
@@ -949,7 +915,7 @@ void DebuggerEngine::notifyInferiorShutdownFailed()
QTC_ASSERT(state() == InferiorShutdownRequested, qDebug() << this << state()); QTC_ASSERT(state() == InferiorShutdownRequested, qDebug() << this << state());
setState(InferiorShutdownFailed); setState(InferiorShutdownFailed);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEngine::notifyInferiorIll() void DebuggerEngine::notifyInferiorIll()
@@ -966,7 +932,7 @@ void DebuggerEngine::notifyInferiorIll()
setState(InferiorRunFailed); setState(InferiorRunFailed);
setState(InferiorStopOk); setState(InferiorStopOk);
} }
d->queueShutdownInferior(); d->doShutdownInferior();
} }
void DebuggerEngine::shutdownSlaveEngine() void DebuggerEngine::shutdownSlaveEngine()
@@ -978,8 +944,8 @@ void DebuggerEngine::shutdownSlaveEngine()
void DebuggerEnginePrivate::doShutdownEngine() void DebuggerEnginePrivate::doShutdownEngine()
{ {
m_engine->setState(EngineShutdownRequested);
QTC_ASSERT(isMasterEngine(), qDebug() << m_engine; return); QTC_ASSERT(isMasterEngine(), qDebug() << m_engine; return);
QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << m_engine << state());
QTC_ASSERT(runTool(), return); QTC_ASSERT(runTool(), return);
runTool()->startDying(); runTool()->startDying();
m_engine->showMessage("CALL: SHUTDOWN ENGINE"); m_engine->showMessage("CALL: SHUTDOWN ENGINE");
@@ -991,7 +957,7 @@ void DebuggerEngine::notifyEngineShutdownOk()
showMessage("NOTE: ENGINE SHUTDOWN OK"); showMessage("NOTE: ENGINE SHUTDOWN OK");
QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << this << state()); QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << this << state());
setState(EngineShutdownOk); setState(EngineShutdownOk);
d->queueFinishDebugger(); d->doFinishDebugger();
} }
void DebuggerEngine::notifyEngineShutdownFailed() void DebuggerEngine::notifyEngineShutdownFailed()
@@ -999,15 +965,7 @@ void DebuggerEngine::notifyEngineShutdownFailed()
showMessage("NOTE: ENGINE SHUTDOWN FAILED"); showMessage("NOTE: ENGINE SHUTDOWN FAILED");
QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << this << state()); QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << this << state());
setState(EngineShutdownFailed); setState(EngineShutdownFailed);
d->queueFinishDebugger(); d->doFinishDebugger();
}
void DebuggerEnginePrivate::doFinishDebugger()
{
m_engine->showMessage("NOTE: FINISH DEBUGGER");
QTC_ASSERT(state() == DebuggerFinished, qDebug() << m_engine << state());
if (isMasterEngine() && m_runTool)
m_runTool->debuggingFinished();
} }
RunControl *DebuggerEnginePrivate::runControl() const RunControl *DebuggerEnginePrivate::runControl() const
@@ -1042,11 +1000,11 @@ void DebuggerEngine::notifyEngineIll()
showMessage("FORWARDING STATE TO InferiorShutdownFailed"); showMessage("FORWARDING STATE TO InferiorShutdownFailed");
setState(InferiorShutdownFailed, true); setState(InferiorShutdownFailed, true);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
break; break;
default: default:
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
break; break;
} }
} }
@@ -1060,7 +1018,7 @@ void DebuggerEngine::notifyEngineSpontaneousShutdown()
showMessage("NOTE: ENGINE SPONTANEOUS SHUTDOWN"); showMessage("NOTE: ENGINE SPONTANEOUS SHUTDOWN");
setState(EngineShutdownOk, true); setState(EngineShutdownOk, true);
if (isMasterEngine()) if (isMasterEngine())
d->queueFinishDebugger(); d->doFinishDebugger();
} }
void DebuggerEngine::notifyInferiorExited() void DebuggerEngine::notifyInferiorExited()
@@ -1073,7 +1031,7 @@ void DebuggerEngine::notifyInferiorExited()
d->resetLocation(); d->resetLocation();
setState(InferiorShutdownOk); setState(InferiorShutdownOk);
if (isMasterEngine()) if (isMasterEngine())
d->queueShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEngine::notifyDebuggerProcessFinished(int exitCode, void DebuggerEngine::notifyDebuggerProcessFinished(int exitCode,
@@ -1309,7 +1267,7 @@ void DebuggerEngine::quitDebugger()
case InferiorStopOk: case InferiorStopOk:
case InferiorStopFailed: case InferiorStopFailed:
case InferiorUnrunnable: case InferiorUnrunnable:
d->queueShutdownInferior(); d->doShutdownInferior();
break; break;
case InferiorRunOk: case InferiorRunOk:
d->doInterruptInferior(); d->doInterruptInferior();