diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index d33777a301d..c0618ee818c 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1805,9 +1805,16 @@ bool DebuggerEngine::isNativeMixedActiveFrame() const return frame.language == QmlLanguage; } +bool DebuggerRunParameters::isCppDebugging() const +{ + return cppEngineType == CdbEngineType + || cppEngineType == GdbEngineType + || cppEngineType == LldbEngineType; +} + bool DebuggerRunParameters::isNativeMixedDebugging() const { - return nativeMixedEnabled && isCppDebugging && isQmlDebugging; + return nativeMixedEnabled && isCppDebugging() && isQmlDebugging; } } // namespace Internal diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 38903bcbe9c..37d4f10a105 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -129,7 +129,6 @@ public: DebuggerEngineType cppEngineType = NoEngineType; - bool isCppDebugging = true; bool isQmlDebugging = false; bool breakOnMain = false; bool multiProcess = false; // Whether to set detach-on-fork off. @@ -156,6 +155,7 @@ public: bool nativeMixedEnabled = false; + bool isCppDebugging() const; bool isNativeMixedDebugging() const; void validateExecutable(); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index cd9374a3289..bf392f16be4 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -2868,7 +2868,7 @@ static QString formatStartParameters(const DebuggerRunTool *debugger) str << "Start parameters: '" << sp.displayName << "' mode: " << sp.startMode << "\nABI: " << sp.toolChainAbi.toString() << '\n'; str << "Languages: "; - if (sp.isCppDebugging) + if (sp.isCppDebugging()) str << "c++ "; if (sp.isQmlDebugging) str << "qml"; @@ -3345,7 +3345,7 @@ void DebuggerPluginPrivate::updateActiveLanguages() // Id perspective = (languages & QmlLanguage) && !(languages & CppLanguage) // ? QmlPerspectiveId : CppPerspectiveId; // m_mainWindow->restorePerspective(perspective); - if (rp.isCppDebugging) + if (rp.isCppDebugging()) ICore::addAdditionalContext(Context(C_CPPDEBUGGER)); else ICore::removeAdditionalContext(Context(C_CPPDEBUGGER)); diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index af9c7c10c69..6c66f7eead4 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -264,7 +264,7 @@ void DebuggerRunTool::setStartMode(DebuggerStartMode startMode) { if (startMode == AttachToQmlServer) { m_runParameters.startMode = AttachToRemoteProcess; - m_runParameters.isCppDebugging = false; + m_runParameters.cppEngineType = NoEngineType; m_runParameters.isQmlDebugging = true; m_runParameters.closeMode = KillAtClose; @@ -519,7 +519,7 @@ void DebuggerRunTool::start() setQmlServer(d->portsGatherer->qmlServer()); if (d->addQmlServerInferiorCommandLineArgumentIfNeeded && m_runParameters.isQmlDebugging - && m_runParameters.isCppDebugging) { + && m_runParameters.isCppDebugging()) { using namespace QmlDebug; int qmlServerPort = m_runParameters.qmlServer.port(); QTC_ASSERT(qmlServerPort > 0, reportFailure(); return); @@ -562,7 +562,8 @@ void DebuggerRunTool::start() DebuggerEngine *cppEngine = nullptr; if (!m_engine) { - switch (m_runParameters.cppEngineType) { + if (m_runParameters.isCppDebugging()) { + switch (m_runParameters.cppEngineType) { case GdbEngineType: cppEngine = createGdbEngine(); break; @@ -582,11 +583,12 @@ void DebuggerRunTool::start() default: if (!m_runParameters.isQmlDebugging) { reportFailure(DebuggerPlugin::tr("Unable to create a debugging engine. " - "Please select a Debugger Setting from the Run page of the project mode.")); + "Please select a Debugger Setting from the Run page of the project mode.")); return; } // Can happen for pure Qml. break; + } } if (m_runParameters.isQmlDebugging) { @@ -650,7 +652,7 @@ const DebuggerRunParameters &DebuggerRunTool::runParameters() const bool DebuggerRunTool::isCppDebugging() const { - return m_runParameters.isCppDebugging; + return m_runParameters.isCppDebugging(); } bool DebuggerRunTool::isQmlDebugging() const @@ -726,7 +728,7 @@ bool DebuggerRunTool::fixupParameters() rp.debugger.environment.set(var, rp.inferior.environment.value(var)); // validate debugger if C++ debugging is enabled - if (rp.isCppDebugging && !rp.validationErrors.isEmpty()) { + if (rp.isCppDebugging() && !rp.validationErrors.isEmpty()) { reportFailure(rp.validationErrors.join('\n')); return false; } @@ -762,7 +764,7 @@ bool DebuggerRunTool::fixupParameters() if (rp.isQmlDebugging) { QmlDebug::QmlDebugServicesPreset service; - if (rp.isCppDebugging) { + if (rp.isCppDebugging()) { if (rp.nativeMixedEnabled) { service = QmlDebug::QmlNativeDebuggerServices; } else { @@ -772,7 +774,7 @@ bool DebuggerRunTool::fixupParameters() service = QmlDebug::QmlDebuggerServices; } if (rp.startMode != AttachExternal && rp.startMode != AttachCrashedExternal) { - QString qmlarg = rp.isCppDebugging && rp.nativeMixedEnabled + QString qmlarg = rp.isCppDebugging() && rp.nativeMixedEnabled ? QmlDebug::qmlDebugNativeArguments(service, false) : QmlDebug::qmlDebugTcpArguments(service, Port(rp.qmlServer.port())); QtcProcess::addArg(&rp.inferior.commandLineArguments, qmlarg); @@ -805,7 +807,7 @@ bool DebuggerRunTool::fixupParameters() if (rp.isNativeMixedDebugging()) rp.inferior.environment.set("QV4_FORCE_INTERPRETER", "1"); - if (rp.isCppDebugging && !rp.skipExecutableValidation) + if (rp.isCppDebugging() && !rp.skipExecutableValidation) rp.validateExecutable(); return true; @@ -854,13 +856,13 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, Kit *kit, bool allowTer m_runParameters.qtPackageSourceLocation = qtVersion->qtPackageSourcePath().toString(); if (auto aspect = runConfig ? runConfig->extraAspect() : nullptr) { - m_runParameters.isCppDebugging = aspect->useCppDebugger(); + if (aspect->useCppDebugger()) + m_runParameters.cppEngineType = DebuggerKitInformation::engineType(kit); m_runParameters.isQmlDebugging = aspect->useQmlDebugger(); m_runParameters.multiProcess = aspect->useMultiProcess(); - } - - if (m_runParameters.isCppDebugging) + } else if (m_runParameters.isCppDebugging()) { m_runParameters.cppEngineType = DebuggerKitInformation::engineType(kit); + } m_runParameters.inferior = runnable(); // Normalize to work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch'...)