debugger: some start up state consolidation

This commit is contained in:
hjk
2011-01-14 18:16:40 +01:00
parent f245ee6fb5
commit cdee3dc6cd
3 changed files with 64 additions and 32 deletions

View File

@@ -191,6 +191,7 @@ public:
~DebuggerEnginePrivate() {} ~DebuggerEnginePrivate() {}
public slots: public slots:
void doSetupEngine();
void doSetupInferior(); void doSetupInferior();
void doRunEngine(); void doRunEngine();
void doShutdownEngine(); void doShutdownEngine();
@@ -198,6 +199,20 @@ public slots:
void doInterruptInferior(); void doInterruptInferior();
void doFinishDebugger(); void doFinishDebugger();
void queueSetupEngine()
{
m_engine->setState(EngineSetupRequested);
m_engine->showMessage(_("QUEUE: SETUP ENGINE"));
QTimer::singleShot(0, this, SLOT(doSetupEngine()));
}
void queueSetupInferior()
{
m_engine->setState(InferiorSetupRequested);
m_engine->showMessage(_("QUEUE: SETUP INFERIOR"));
QTimer::singleShot(0, this, SLOT(doSetupInferior()));
}
void queueRunEngine() void queueRunEngine()
{ {
m_engine->setState(EngineRunRequested); m_engine->setState(EngineRunRequested);
@@ -528,10 +543,8 @@ void DebuggerEngine::startDebugger(DebuggerRunControl *runControl)
qDebug() << state()); qDebug() << state());
d->m_lastGoodState = DebuggerNotReady; d->m_lastGoodState = DebuggerNotReady;
d->m_targetState = DebuggerNotReady; d->m_targetState = DebuggerNotReady;
setState(EngineSetupRequested);
d->m_progress.setProgressValue(200); d->m_progress.setProgressValue(200);
setupEngine(); d->queueSetupEngine();
} }
void DebuggerEngine::resetLocation() void DebuggerEngine::resetLocation()
@@ -744,6 +757,19 @@ static bool isAllowedTransition(DebuggerState from, DebuggerState to)
return false; return false;
} }
void DebuggerEngine::setupSlaveEngine()
{
QTC_ASSERT(state() == DebuggerNotReady, /**/);
d->queueSetupEngine();
}
void DebuggerEnginePrivate::doSetupEngine()
{
m_engine->showMessage(_("CALL: SETUP ENGINE"));
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << m_engine << state());
m_engine->setupEngine();
}
void DebuggerEngine::notifyEngineSetupFailed() void DebuggerEngine::notifyEngineSetupFailed()
{ {
showMessage(_("NOTE: ENGINE SETUP FAILED")); showMessage(_("NOTE: ENGINE SETUP FAILED"));
@@ -761,16 +787,20 @@ void DebuggerEngine::notifyEngineSetupOk()
setState(EngineSetupOk); setState(EngineSetupOk);
showMessage(_("QUEUE: SETUP INFERIOR")); showMessage(_("QUEUE: SETUP INFERIOR"));
if (isMasterEngine()) if (isMasterEngine())
QTimer::singleShot(0, d, SLOT(doSetupInferior())); d->queueSetupInferior();
}
void DebuggerEngine::setupSlaveInferior()
{
QTC_ASSERT(state() == EngineSetupOk, /**/);
d->queueSetupInferior();
} }
void DebuggerEnginePrivate::doSetupInferior() void DebuggerEnginePrivate::doSetupInferior()
{ {
QTC_ASSERT(isMasterEngine(), return);
m_engine->showMessage(_("CALL: SETUP INFERIOR")); m_engine->showMessage(_("CALL: SETUP INFERIOR"));
QTC_ASSERT(state() == EngineSetupOk, qDebug() << m_engine << state()); QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << m_engine << state());
m_progress.setProgressValue(250); m_progress.setProgressValue(250);
m_engine->setState(InferiorSetupRequested);
m_engine->setupInferior(); m_engine->setupInferior();
} }
@@ -792,9 +822,15 @@ void DebuggerEngine::notifyInferiorSetupOk()
d->queueRunEngine(); d->queueRunEngine();
} }
void DebuggerEngine::runSlaveEngine()
{
QTC_ASSERT(isSlaveEngine(), return);
QTC_ASSERT(state() == InferiorSetupOk, /**/);
d->queueRunEngine();
}
void DebuggerEnginePrivate::doRunEngine() void DebuggerEnginePrivate::doRunEngine()
{ {
QTC_ASSERT(isMasterEngine(), return);
m_engine->showMessage(_("CALL: RUN ENGINE")); m_engine->showMessage(_("CALL: RUN ENGINE"));
QTC_ASSERT(state() == EngineRunRequested, qDebug() << m_engine << state()); QTC_ASSERT(state() == EngineRunRequested, qDebug() << m_engine << state());
m_progress.setProgressValue(300); m_progress.setProgressValue(300);
@@ -964,6 +1000,13 @@ void DebuggerEngine::notifyInferiorIll()
d->queueShutdownInferior(); d->queueShutdownInferior();
} }
void DebuggerEngine::shutdownSlaveEngine()
{
QTC_ASSERT(state() == InferiorShutdownOk, /**/);
setState(EngineShutdownRequested);
shutdownEngine();
}
void DebuggerEnginePrivate::doShutdownEngine() void DebuggerEnginePrivate::doShutdownEngine()
{ {
QTC_ASSERT(isMasterEngine(), qDebug() << m_engine; return); QTC_ASSERT(isMasterEngine(), qDebug() << m_engine; return);

View File

@@ -345,6 +345,11 @@ protected:
bool isStateDebugging() const; bool isStateDebugging() const;
void setStateDebugging(bool on); void setStateDebugging(bool on);
virtual void setupSlaveInferior();
virtual void setupSlaveEngine();
virtual void runSlaveEngine();
virtual void shutdownSlaveEngine();
private: private:
// Wrapper engine needs access to state of its subengines. // Wrapper engine needs access to state of its subengines.
friend class Internal::QmlCppEngine; friend class Internal::QmlCppEngine;

View File

@@ -323,12 +323,8 @@ void QmlCppEngine::frameDown()
void QmlCppEngine::setupEngine() void QmlCppEngine::setupEngine()
{ {
qDebug() << "\nMASTER SETUP ENGINE"; qDebug() << "\nMASTER SETUP ENGINE";
QTC_ASSERT(d->m_cppEngine->state() == DebuggerNotReady, /**/); d->m_qmlEngine->setupSlaveEngine();
QTC_ASSERT(d->m_qmlEngine->state() == DebuggerNotReady, /**/); d->m_cppEngine->setupSlaveEngine();
d->m_qmlEngine->setSilentState(EngineSetupRequested);
d->m_cppEngine->setSilentState(EngineSetupRequested);
d->m_qmlEngine->setupEngine(); // Always succeeds.
d->m_cppEngine->setupEngine(); // May fail.
} }
void QmlCppEngine::notifyEngineRunAndInferiorRunOk() void QmlCppEngine::notifyEngineRunAndInferiorRunOk()
@@ -358,23 +354,15 @@ void QmlCppEngine::notifyInferiorShutdownOk()
void QmlCppEngine::setupInferior() void QmlCppEngine::setupInferior()
{ {
qDebug() << "\nMASTER SETUP INFERIOR"; qDebug() << "\nMASTER SETUP INFERIOR";
QTC_ASSERT(d->m_cppEngine->state() == EngineSetupOk, /**/); d->m_qmlEngine->setupSlaveInferior();
QTC_ASSERT(d->m_qmlEngine->state() == EngineSetupOk, /**/); d->m_cppEngine->setupSlaveInferior();
d->m_qmlEngine->setSilentState(InferiorSetupRequested);
d->m_cppEngine->setSilentState(InferiorSetupRequested);
d->m_cppEngine->setupInferior();
d->m_qmlEngine->setupInferior();
} }
void QmlCppEngine::runEngine() void QmlCppEngine::runEngine()
{ {
qDebug() << "\nMASTER RUN ENGINE"; qDebug() << "\nMASTER RUN ENGINE";
QTC_ASSERT(d->m_cppEngine->state() == InferiorSetupOk, /**/); d->m_qmlEngine->runSlaveEngine();
QTC_ASSERT(d->m_qmlEngine->state() == InferiorSetupOk, /**/); d->m_cppEngine->runSlaveEngine();
d->m_qmlEngine->setSilentState(EngineRunRequested);
d->m_cppEngine->setSilentState(EngineRunRequested);
d->m_cppEngine->runEngine();
d->m_qmlEngine->runEngine();
} }
void QmlCppEngine::shutdownInferior() void QmlCppEngine::shutdownInferior()
@@ -386,12 +374,8 @@ void QmlCppEngine::shutdownInferior()
void QmlCppEngine::shutdownEngine() void QmlCppEngine::shutdownEngine()
{ {
qDebug() << "\nMASTER SHUTDOWN ENGINE"; qDebug() << "\nMASTER SHUTDOWN ENGINE";
QTC_ASSERT(d->m_cppEngine->state() == InferiorShutdownOk, /**/); d->m_qmlEngine->shutdownSlaveEngine();
QTC_ASSERT(d->m_qmlEngine->state() == InferiorShutdownOk, /**/); d->m_cppEngine->shutdownSlaveEngine();
d->m_qmlEngine->setSilentState(EngineShutdownRequested);
d->m_cppEngine->setSilentState(EngineShutdownRequested);
d->m_qmlEngine->shutdownEngine();
d->m_cppEngine->shutdownEngine();
} }
void QmlCppEngine::setState(DebuggerState newState, bool forced) void QmlCppEngine::setState(DebuggerState newState, bool forced)