forked from qt-creator/qt-creator
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:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user