summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-10-16 13:30:53 +0200
committerhjk <hjk@qt.io>2017-10-17 13:57:34 +0000
commit87cd4495a9f23512e956b6313f1b5fa918e16b36 (patch)
treed5004200af1ddbcda41072092cea1c027b84315a
parentdfe23b210d7abc8ce5cade237976f51a69b7c8f0 (diff)
downloadqt-creator-87cd4495a9f23512e956b6313f1b5fa918e16b36.tar.gz
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>
-rw-r--r--src/plugins/debugger/debuggerengine.cpp22
-rw-r--r--src/plugins/debugger/debuggerengine.h2
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp2
-rw-r--r--src/plugins/debugger/qml/qmlcppengine.cpp8
-rw-r--r--src/plugins/debugger/qml/qmlcppengine.h1
5 files changed, 12 insertions, 23 deletions
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 81ad455a00..fc19bdd51b 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -233,7 +233,6 @@ public:
void doRunEngine();
void doShutdownEngine();
void doShutdownInferior();
- void doInterruptInferior();
void reloadDisassembly()
{
@@ -856,16 +855,6 @@ void DebuggerEngine::notifyInferiorStopFailed()
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()
{
m_engine->setState(InferiorShutdownRequested);
@@ -1237,7 +1226,9 @@ void DebuggerEngine::quitDebugger()
d->doShutdownInferior();
break;
case InferiorRunOk:
- d->doInterruptInferior();
+ setState(InferiorStopRequested);
+ showStatusMessage(tr("Attempting to interrupt."));
+ interruptInferior();
break;
case EngineSetupRequested:
notifyEngineSetupFailed();
@@ -1283,7 +1274,12 @@ void DebuggerEngine::abortDebugger()
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()
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index 9def5109f7..41bcd8a2fa 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -442,7 +442,7 @@ protected:
virtual void continueInferior();
virtual void interruptInferior();
- virtual void requestInterruptInferior();
+ void requestInterruptInferior();
virtual void executeRunToLine(const Internal::ContextData &data);
virtual void executeRunToFunction(const QString &functionName);
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 9d9c14833f..f3e1915b10 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -3036,7 +3036,7 @@ DebuggerEngine *currentEngine()
{
DebuggerEngine *engine = nullptr;
if (dd->m_currentRunTool)
- engine = dd->m_currentRunTool->activeEngine();
+ engine = dd->m_currentRunTool->engine();
return engine ? engine : dd->dummyEngine();
}
diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp
index 21e280ebfe..7554a68d8b 100644
--- a/src/plugins/debugger/qml/qmlcppengine.cpp
+++ b/src/plugins/debugger/qml/qmlcppengine.cpp
@@ -337,13 +337,7 @@ void QmlCppEngine::continueInferior()
void QmlCppEngine::interruptInferior()
{
EDEBUG("\nMASTER INTERRUPT INFERIOR");
- m_cppEngine->requestInterruptInferior();
-}
-
-void QmlCppEngine::requestInterruptInferior()
-{
- EDEBUG("\nMASTER REQUEST INTERRUPT INFERIOR");
- DebuggerEngine::requestInterruptInferior();
+ m_activeEngine->interruptInferior();
}
void QmlCppEngine::executeRunToLine(const ContextData &data)
diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h
index 1a6bffb7c5..751fa3c410 100644
--- a/src/plugins/debugger/qml/qmlcppengine.h
+++ b/src/plugins/debugger/qml/qmlcppengine.h
@@ -98,7 +98,6 @@ protected:
void executeReturn() override;
void continueInferior() override;
void interruptInferior() override;
- void requestInterruptInferior() override;
void executeRunToLine(const ContextData &data) override;
void executeRunToFunction(const QString &functionName) override;