Debugger: Pass interrupt request more directly to engines

De-virtualize requestInterruptInferior() and let always
the master engine react to the request. interruptInferior()
diverts to the active slave in case of the combined engine.

Change-Id: I5d62cf9379c8a452132827897a9ac51e4027f595
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2017-10-16 13:30:53 +02:00
parent dfe23b210d
commit 87cd4495a9
5 changed files with 12 additions and 23 deletions

View File

@@ -233,7 +233,6 @@ public:
void doRunEngine(); void doRunEngine();
void doShutdownEngine(); void doShutdownEngine();
void doShutdownInferior(); void doShutdownInferior();
void doInterruptInferior();
void reloadDisassembly() void reloadDisassembly()
{ {
@@ -856,16 +855,6 @@ void DebuggerEngine::notifyInferiorStopFailed()
d->doShutdownEngine(); d->doShutdownEngine();
} }
void DebuggerEnginePrivate::doInterruptInferior()
{
//QTC_ASSERT(isMasterEngine(), return);
QTC_ASSERT(state() == InferiorRunOk, qDebug() << m_engine << state());
m_engine->setState(InferiorStopRequested);
m_engine->showMessage("CALL: INTERRUPT INFERIOR");
m_engine->showStatusMessage(tr("Attempting to interrupt."));
m_engine->interruptInferior();
}
void DebuggerEnginePrivate::doShutdownInferior() void DebuggerEnginePrivate::doShutdownInferior()
{ {
m_engine->setState(InferiorShutdownRequested); m_engine->setState(InferiorShutdownRequested);
@@ -1237,7 +1226,9 @@ void DebuggerEngine::quitDebugger()
d->doShutdownInferior(); d->doShutdownInferior();
break; break;
case InferiorRunOk: case InferiorRunOk:
d->doInterruptInferior(); setState(InferiorStopRequested);
showStatusMessage(tr("Attempting to interrupt."));
interruptInferior();
break; break;
case EngineSetupRequested: case EngineSetupRequested:
notifyEngineSetupFailed(); notifyEngineSetupFailed();
@@ -1283,7 +1274,12 @@ void DebuggerEngine::abortDebugger()
void DebuggerEngine::requestInterruptInferior() void DebuggerEngine::requestInterruptInferior()
{ {
d->doInterruptInferior(); QTC_CHECK(isMasterEngine());
QTC_ASSERT(state() == InferiorRunOk, qDebug() << this << state());
setState(InferiorStopRequested);
showMessage("CALL: INTERRUPT INFERIOR");
showStatusMessage(tr("Attempting to interrupt."));
interruptInferior();
} }
void DebuggerEngine::progressPing() void DebuggerEngine::progressPing()

View File

@@ -442,7 +442,7 @@ protected:
virtual void continueInferior(); virtual void continueInferior();
virtual void interruptInferior(); virtual void interruptInferior();
virtual void requestInterruptInferior(); void requestInterruptInferior();
virtual void executeRunToLine(const Internal::ContextData &data); virtual void executeRunToLine(const Internal::ContextData &data);
virtual void executeRunToFunction(const QString &functionName); virtual void executeRunToFunction(const QString &functionName);

View File

@@ -3036,7 +3036,7 @@ DebuggerEngine *currentEngine()
{ {
DebuggerEngine *engine = nullptr; DebuggerEngine *engine = nullptr;
if (dd->m_currentRunTool) if (dd->m_currentRunTool)
engine = dd->m_currentRunTool->activeEngine(); engine = dd->m_currentRunTool->engine();
return engine ? engine : dd->dummyEngine(); return engine ? engine : dd->dummyEngine();
} }

View File

@@ -337,13 +337,7 @@ void QmlCppEngine::continueInferior()
void QmlCppEngine::interruptInferior() void QmlCppEngine::interruptInferior()
{ {
EDEBUG("\nMASTER INTERRUPT INFERIOR"); EDEBUG("\nMASTER INTERRUPT INFERIOR");
m_cppEngine->requestInterruptInferior(); m_activeEngine->interruptInferior();
}
void QmlCppEngine::requestInterruptInferior()
{
EDEBUG("\nMASTER REQUEST INTERRUPT INFERIOR");
DebuggerEngine::requestInterruptInferior();
} }
void QmlCppEngine::executeRunToLine(const ContextData &data) void QmlCppEngine::executeRunToLine(const ContextData &data)

View File

@@ -98,7 +98,6 @@ protected:
void executeReturn() override; void executeReturn() override;
void continueInferior() override; void continueInferior() override;
void interruptInferior() override; void interruptInferior() override;
void requestInterruptInferior() override;
void executeRunToLine(const ContextData &data) override; void executeRunToLine(const ContextData &data) override;
void executeRunToFunction(const QString &functionName) override; void executeRunToFunction(const QString &functionName) override;