diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 2f06e45f604..56c10575b78 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -361,10 +361,34 @@ void DebuggerRunTool::continueAfterDebugServerStart() rc->initiateStop(); }, Qt::QueuedConnection); connect(engine, &DebuggerEngine::requestRunControlStop, rc, &RunControl::initiateStop); - connect(engine, &DebuggerEngine::engineStarted, - this, [this, engine] { handleEngineStarted(engine); }); - connect(engine, &DebuggerEngine::engineFinished, - this, [this, engine] { handleEngineFinished(engine); }); + + connect(engine, &DebuggerEngine::engineStarted, this, [this, engine] { + // Correct: + // if (--d->engineStartsNeeded == 0) { + // EngineManager::activateDebugMode(); + // reportStarted(); + // } + + // Feels better, as the QML Engine might attach late or not at all. + if (engine == m_engines.first()) { + EngineManager::activateDebugMode(); + reportStarted(); + } + }); + + connect(engine, &DebuggerEngine::engineFinished, this, [this, engine] { + engine->prepareForRestart(); + if (--d->engineStopsNeeded == 0) { + const QString cmd = m_runParameters.inferior().command.toUserOutput(); + const QString msg = engine->runParameters().exitCode() // Main engine. + ? Tr::tr("Debugging of %1 has finished with exit code %2.") + .arg(cmd) + .arg(*engine->runParameters().exitCode()) + : Tr::tr("Debugging of %1 has finished.").arg(cmd); + appendMessage(msg, NormalMessageFormat); + reportStopped(); + } + }); connect(engine, &DebuggerEngine::appendMessageRequested, this, &DebuggerRunTool::appendMessage); ++d->engineStartsNeeded; @@ -464,36 +488,6 @@ void DebuggerRunTool::stop() Utils::reverseForeach(m_engines, [](DebuggerEngine *engine) { engine->quitDebugger(); }); } -void DebuggerRunTool::handleEngineStarted(DebuggerEngine *engine) -{ - // Correct: -// if (--d->engineStartsNeeded == 0) { -// EngineManager::activateDebugMode(); -// reportStarted(); -// } - - // Feels better, as the QML Engine might attach late or not at all. - if (engine == m_engines.first()) { - EngineManager::activateDebugMode(); - reportStarted(); - } -} - -void DebuggerRunTool::handleEngineFinished(DebuggerEngine *engine) -{ - engine->prepareForRestart(); - if (--d->engineStopsNeeded == 0) { - const QString cmd = m_runParameters.inferior().command.toUserOutput(); - const QString msg = engine->runParameters().exitCode() // Main engine. - ? Tr::tr("Debugging of %1 has finished with exit code %2.") - .arg(cmd) - .arg(*engine->runParameters().exitCode()) - : Tr::tr("Debugging of %1 has finished.").arg(cmd); - appendMessage(msg, NormalMessageFormat); - reportStopped(); - } -} - void DebuggerRunTool::setupPortsGatherer() { if (m_runParameters.isCppDebugging()) diff --git a/src/plugins/debugger/debuggerruncontrol.h b/src/plugins/debugger/debuggerruncontrol.h index c53a57ec28d..0b5005b714d 100644 --- a/src/plugins/debugger/debuggerruncontrol.h +++ b/src/plugins/debugger/debuggerruncontrol.h @@ -40,9 +40,6 @@ public: private: void showMessage(const QString &msg, int channel = LogDebug, int timeout = -1); - void handleEngineStarted(Internal::DebuggerEngine *engine); - void handleEngineFinished(Internal::DebuggerEngine *engine); - void startCoreFileSetupIfNeededAndContinueStartup(); void continueAfterCoreFileSetup();