From 05350fc830e90c8af1cc386c0cf3e4979a2061ac Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 10 Jan 2025 17:27:50 +0100 Subject: [PATCH] Debugger: Also move is{Cpp,Qml}Debugging() to DebuggerRunParameters Change-Id: Ic318c5813316da66097c8438ec26602491b4f863 Reviewed-by: Jarek Kobus --- src/plugins/android/androiddebugsupport.cpp | 8 ++++---- src/plugins/debugger/debuggerengine.cpp | 12 +++++------ src/plugins/debugger/debuggerengine.h | 5 ++++- src/plugins/debugger/debuggerruncontrol.cpp | 20 +++++-------------- src/plugins/debugger/debuggerruncontrol.h | 7 ++----- src/plugins/ios/iosrunner.cpp | 18 ++++++++--------- src/plugins/qnx/qnxdebugsupport.cpp | 2 +- .../appmanagerruncontrol.cpp | 4 ++-- 8 files changed, 33 insertions(+), 43 deletions(-) diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp index 51de89aa3f9..be3858ab8c9 100644 --- a/src/plugins/android/androiddebugsupport.cpp +++ b/src/plugins/android/androiddebugsupport.cpp @@ -105,7 +105,7 @@ public: rp.setUseTargetAsync(true); } - if (isCppDebugging()) { + if (rp.isCppDebugging()) { qCDebug(androidDebugSupportLog) << "C++ debugging enabled"; const ProjectNode *node = target->project()->findNodeForBuildKey(runControl->buildKey()); FilePaths solibSearchPath = getSoLibSearchPath(node); @@ -147,7 +147,7 @@ public: qCDebug(androidDebugSupportLog).noquote() << "Sysroot: " << sysRoot.toUserOutput(); } } - if (isQmlDebugging()) { + if (rp.isQmlDebugging()) { qCDebug(androidDebugSupportLog) << "QML debugging enabled. QML server: " << runControl->qmlChannel().toDisplayString(); //TODO: Not sure if these are the right paths. @@ -170,7 +170,7 @@ void AndroidDebugSupport::start() { DebuggerRunParameters &rp = runParameters(); rp.setAttachPid(m_runner->pid()); - if (isCppDebugging()) { + if (rp.isCppDebugging()) { if (cppEngineType() == LldbEngineType) { QString deviceSerialNumber = Internal::deviceSerialNumber(runControl()->target()); const int colonPos = deviceSerialNumber.indexOf(QLatin1Char(':')); @@ -187,7 +187,7 @@ void AndroidDebugSupport::start() rp.setRemoteChannel(debugServer); } } - if (isQmlDebugging()) + if (rp.isQmlDebugging()) rp.setQmlServer(runControl()->qmlChannel()); DebuggerRunTool::start(); } diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 34eb36dfe07..0b4840f69a9 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -148,7 +148,7 @@ DebuggerRunParameters DebuggerRunParameters::fromRunControl(ProjectExplorer::Run if (auto aspect = runControl->aspectData()) { if (!aspect->useCppDebugger) params.cppEngineType = NoEngineType; - params.isQmlDebugging = aspect->useQmlDebugger; + params.m_isQmlDebugging = aspect->useQmlDebugger; params.isPythonDebugging = aspect->usePythonDebugger; params.multiProcess = aspect->useMultiProcess; params.additionalStartupCommands = aspect->overrideStartup; @@ -226,7 +226,7 @@ Result DebuggerRunParameters::fixupParameters(ProjectExplorer::RunControl *runCo if (!validationErrors.isEmpty()) return Result::Error(validationErrors.join('\n')); - if (isQmlDebugging) { + if (m_isQmlDebugging) { const auto device = runControl->device(); if (device && device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) { if (m_qmlServer.port() <= 0) { @@ -253,7 +253,7 @@ Result DebuggerRunParameters::fixupParameters(ProjectExplorer::RunControl *runCo } } - if (isQmlDebugging) { + if (m_isQmlDebugging) { QmlDebugServicesPreset service; if (isCppDebugging()) { if (nativeMixedEnabled) { @@ -310,7 +310,7 @@ void DebuggerRunParameters::setStartMode(DebuggerStartMode startMode) return; cppEngineType = NoEngineType; - isQmlDebugging = true; + m_isQmlDebugging = true; m_closeMode = KillAtClose; // FIXME: This is horribly wrong. @@ -346,7 +346,7 @@ bool DebuggerRunParameters::isCppDebugging() const bool DebuggerRunParameters::isNativeMixedDebugging() const { - return nativeMixedEnabled && isCppDebugging() && isQmlDebugging; + return nativeMixedEnabled && isCppDebugging() && m_isQmlDebugging; } namespace Internal { @@ -2899,7 +2899,7 @@ QString DebuggerEngine::formatStartParameters() const str << "Languages: "; if (sp.isCppDebugging()) str << "c++ "; - if (sp.isQmlDebugging) + if (sp.isQmlDebugging()) str << "qml"; str << '\n'; if (!sp.inferior().command.isEmpty()) { diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index e056f296daa..5aea5bebd2d 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -109,6 +109,9 @@ public: void setQmlServer(const QUrl &qmlServer) { m_qmlServer = qmlServer; } QUrl qmlServer() const { return m_qmlServer; } + bool isQmlDebugging() const { return m_isQmlDebugging; } + void setQmlDebugging(bool on) { m_isQmlDebugging = on; } + void setRemoteChannel(const QString &channel) { m_remoteChannel = channel; } void setRemoteChannel(const QUrl &url) { m_remoteChannel = QString("%1:%2").arg(url.host()).arg(url.port()); @@ -176,7 +179,6 @@ public: DebuggerEngineType cppEngineType = NoEngineType; QString version; - bool isQmlDebugging = false; bool isPythonDebugging = false; bool breakOnMain = false; bool multiProcess = false; // Whether to set detach-on-fork off. @@ -244,6 +246,7 @@ private: Utils::FilePaths m_solibSearchPath; QUrl m_qmlServer; // Used by Qml debugging. + bool m_isQmlDebugging = false; QString m_remoteChannel; // Used by general remote debugging. bool m_useExtendedRemote = false; // Whether to use GDB's target extended-remote or not. diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 85cc22e2d71..1b489369a9d 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -281,7 +281,7 @@ void DebuggerRunTool::continueAfterTerminalStart() if (runControl()->usesQmlChannel()) { m_runParameters.setQmlServer(runControl()->qmlChannel()); if (d->addQmlServerInferiorCommandLineArgumentIfNeeded - && m_runParameters.isQmlDebugging + && m_runParameters.isQmlDebugging() && m_runParameters.isCppDebugging()) { int qmlServerPort = m_runParameters.qmlServer().port(); @@ -373,7 +373,7 @@ void DebuggerRunTool::continueAfterDebugServerStart() m_engines << createUvscEngine(); break; default: - if (!m_runParameters.isQmlDebugging) { + if (!m_runParameters.isQmlDebugging()) { reportFailure(noEngineMessage() + '\n' + Tr::tr("Specify Debugger settings in Projects > Run.")); return; @@ -386,7 +386,7 @@ void DebuggerRunTool::continueAfterDebugServerStart() if (m_runParameters.isPythonDebugging) m_engines << createPdbEngine(); - if (m_runParameters.isQmlDebugging) + if (m_runParameters.isQmlDebugging()) m_engines << createQmlEngine(); } @@ -558,22 +558,12 @@ void DebuggerRunTool::handleEngineFinished(DebuggerEngine *engine) } } -bool DebuggerRunTool::isCppDebugging() const -{ - return m_runParameters.isCppDebugging(); -} - -bool DebuggerRunTool::isQmlDebugging() const -{ - return m_runParameters.isQmlDebugging; -} - void DebuggerRunTool::setupPortsGatherer() { - if (isCppDebugging()) + if (m_runParameters.isCppDebugging()) runControl()->requestDebugChannel(); - if (isQmlDebugging()) + if (m_runParameters.isQmlDebugging()) runControl()->requestQmlChannel(); } diff --git a/src/plugins/debugger/debuggerruncontrol.h b/src/plugins/debugger/debuggerruncontrol.h index 9194adbe7f8..0eae3d8de55 100644 --- a/src/plugins/debugger/debuggerruncontrol.h +++ b/src/plugins/debugger/debuggerruncontrol.h @@ -47,14 +47,9 @@ public: void kickoffTerminalProcess(); void interruptTerminal(); - DebuggerRunParameters &runParameters() { return m_runParameters; } - void addQmlServerInferiorCommandLineArgumentIfNeeded(); void setupPortsGatherer(); - bool isCppDebugging() const; - bool isQmlDebugging() const; - void modifyDebuggerEnvironment(const Utils::EnvironmentItems &item); void setDeviceUuid(const QString &uuid); @@ -63,6 +58,8 @@ public: DebuggerEngineType cppEngineType() const; + DebuggerRunParameters &runParameters() { return m_runParameters; } + private: void showMessage(const QString &msg, int channel = LogDebug, int timeout = -1); diff --git a/src/plugins/ios/iosrunner.cpp b/src/plugins/ios/iosrunner.cpp index d13500c5f8d..5ad84edd73a 100644 --- a/src/plugins/ios/iosrunner.cpp +++ b/src/plugins/ios/iosrunner.cpp @@ -907,21 +907,21 @@ IosDebugSupport::IosDebugSupport(RunControl *runControl) setId("IosDebugSupport"); IosDevice::ConstPtr dev = std::dynamic_pointer_cast(device()); + DebuggerRunParameters &rp = runParameters(); if (dev->type() == Ios::Constants::IOS_SIMULATOR_TYPE || dev->handler() == IosDevice::Handler::IosTool) { m_iosRunner = new IosRunner(runControl); - m_iosRunner->setCppDebugging(isCppDebugging()); - m_iosRunner->setQmlDebugging(isQmlDebugging() ? QmlDebuggerServices : NoQmlDebugServices); + m_iosRunner->setCppDebugging(rp.isCppDebugging()); + m_iosRunner->setQmlDebugging(rp.isQmlDebugging() ? QmlDebuggerServices : NoQmlDebugServices); addStartDependency(m_iosRunner); } else { - QTC_CHECK(isCppDebugging()); + QTC_CHECK(rp.isCppDebugging()); m_deviceCtlRunner = new DeviceCtlRunner(runControl); m_deviceCtlRunner->setStartStopped(true); addStartDependency(m_deviceCtlRunner); } - DebuggerRunParameters &rp = runParameters(); if (device()->type() == Ios::Constants::IOS_DEVICE_TYPE) { if (dev->handler() == IosDevice::Handler::DeviceCtl) { QTC_CHECK(IosDeviceManager::isDeviceCtlDebugSupported()); @@ -957,12 +957,12 @@ void IosDebugSupport::start() const auto msgOnlyCppDebuggingSupported = [] { return Tr::tr("Only C++ debugging is supported for devices with iOS 17 and later."); }; - if (!isCppDebugging()) { + if (!rp.isCppDebugging()) { reportFailure(msgOnlyCppDebuggingSupported()); return; } - if (isQmlDebugging()) { - runParameters().isQmlDebugging = false; + if (rp.isQmlDebugging()) { + rp.setQmlDebugging(false); appendMessage(msgOnlyCppDebuggingSupported(), OutputFormat::LogMessageFormat, true); } rp.setAttachPid(m_deviceCtlRunner->processIdentifier()); @@ -980,8 +980,8 @@ void IosDebugSupport::start() const Port qmlServerPort = m_iosRunner->qmlServerPort(); rp.setAttachPid(m_iosRunner->pid()); - const bool cppDebug = isCppDebugging(); - const bool qmlDebug = isQmlDebugging(); + const bool cppDebug = rp.isCppDebugging(); + const bool qmlDebug = rp.isQmlDebugging(); if (cppDebug) { rp.setInferiorExecutable(data->localExecutable); rp.setRemoteChannel("connect://localhost:" + gdbServerPort.toString()); diff --git a/src/plugins/qnx/qnxdebugsupport.cpp b/src/plugins/qnx/qnxdebugsupport.cpp index 32e71cffb2d..b83d549198e 100644 --- a/src/plugins/qnx/qnxdebugsupport.cpp +++ b/src/plugins/qnx/qnxdebugsupport.cpp @@ -137,7 +137,7 @@ void showAttachToProcessDialog() debugger->setId("QnxAttachDebugSupport"); debugger->setupPortsGatherer(); rp.setUseCtrlCStub(true); - if (debugger->isCppDebugging()) { + if (rp.isCppDebugging()) { auto pdebugRunner = new ProcessRunner(runControl); pdebugRunner->setId("PDebugRunner"); pdebugRunner->setStartModifier([pdebugRunner, runControl] { diff --git a/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp b/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp index ed6caaa0a5d..2c077f1005d 100644 --- a/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp +++ b/src/plugins/qtapplicationmanager/appmanagerruncontrol.cpp @@ -156,10 +156,10 @@ private: rp.setStartMode(Debugger::AttachToRemoteServer); rp.setCloseMode(Debugger::KillAndExitMonitorAtClose); - if (isQmlDebugging()) + if (rp.isQmlDebugging()) rp.setQmlServer(runControl()->qmlChannel()); - if (isCppDebugging()) { + if (rp.isCppDebugging()) { rp.setUseExtendedRemote(false); rp.setUseContinueInsteadOfRun(true); rp.setContinueAfterAttach(true);