Debugger: remove redundant info whether to use cpp debugging

Task-number: QTCREATORBUG-20168
Change-Id: I2a0bfba6aea39da443032fd9ab02869cdc508696
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
David Schulz
2018-07-25 14:07:08 +02:00
parent 59175ac423
commit 99e3635ef3
4 changed files with 26 additions and 17 deletions

View File

@@ -1805,9 +1805,16 @@ bool DebuggerEngine::isNativeMixedActiveFrame() const
return frame.language == QmlLanguage; return frame.language == QmlLanguage;
} }
bool DebuggerRunParameters::isCppDebugging() const
{
return cppEngineType == CdbEngineType
|| cppEngineType == GdbEngineType
|| cppEngineType == LldbEngineType;
}
bool DebuggerRunParameters::isNativeMixedDebugging() const bool DebuggerRunParameters::isNativeMixedDebugging() const
{ {
return nativeMixedEnabled && isCppDebugging && isQmlDebugging; return nativeMixedEnabled && isCppDebugging() && isQmlDebugging;
} }
} // namespace Internal } // namespace Internal

View File

@@ -129,7 +129,6 @@ public:
DebuggerEngineType cppEngineType = NoEngineType; DebuggerEngineType cppEngineType = NoEngineType;
bool isCppDebugging = true;
bool isQmlDebugging = false; bool isQmlDebugging = false;
bool breakOnMain = false; bool breakOnMain = false;
bool multiProcess = false; // Whether to set detach-on-fork off. bool multiProcess = false; // Whether to set detach-on-fork off.
@@ -156,6 +155,7 @@ public:
bool nativeMixedEnabled = false; bool nativeMixedEnabled = false;
bool isCppDebugging() const;
bool isNativeMixedDebugging() const; bool isNativeMixedDebugging() const;
void validateExecutable(); void validateExecutable();

View File

@@ -2868,7 +2868,7 @@ static QString formatStartParameters(const DebuggerRunTool *debugger)
str << "Start parameters: '" << sp.displayName << "' mode: " << sp.startMode str << "Start parameters: '" << sp.displayName << "' mode: " << sp.startMode
<< "\nABI: " << sp.toolChainAbi.toString() << '\n'; << "\nABI: " << sp.toolChainAbi.toString() << '\n';
str << "Languages: "; str << "Languages: ";
if (sp.isCppDebugging) if (sp.isCppDebugging())
str << "c++ "; str << "c++ ";
if (sp.isQmlDebugging) if (sp.isQmlDebugging)
str << "qml"; str << "qml";
@@ -3345,7 +3345,7 @@ void DebuggerPluginPrivate::updateActiveLanguages()
// Id perspective = (languages & QmlLanguage) && !(languages & CppLanguage) // Id perspective = (languages & QmlLanguage) && !(languages & CppLanguage)
// ? QmlPerspectiveId : CppPerspectiveId; // ? QmlPerspectiveId : CppPerspectiveId;
// m_mainWindow->restorePerspective(perspective); // m_mainWindow->restorePerspective(perspective);
if (rp.isCppDebugging) if (rp.isCppDebugging())
ICore::addAdditionalContext(Context(C_CPPDEBUGGER)); ICore::addAdditionalContext(Context(C_CPPDEBUGGER));
else else
ICore::removeAdditionalContext(Context(C_CPPDEBUGGER)); ICore::removeAdditionalContext(Context(C_CPPDEBUGGER));

View File

@@ -264,7 +264,7 @@ void DebuggerRunTool::setStartMode(DebuggerStartMode startMode)
{ {
if (startMode == AttachToQmlServer) { if (startMode == AttachToQmlServer) {
m_runParameters.startMode = AttachToRemoteProcess; m_runParameters.startMode = AttachToRemoteProcess;
m_runParameters.isCppDebugging = false; m_runParameters.cppEngineType = NoEngineType;
m_runParameters.isQmlDebugging = true; m_runParameters.isQmlDebugging = true;
m_runParameters.closeMode = KillAtClose; m_runParameters.closeMode = KillAtClose;
@@ -519,7 +519,7 @@ void DebuggerRunTool::start()
setQmlServer(d->portsGatherer->qmlServer()); setQmlServer(d->portsGatherer->qmlServer());
if (d->addQmlServerInferiorCommandLineArgumentIfNeeded if (d->addQmlServerInferiorCommandLineArgumentIfNeeded
&& m_runParameters.isQmlDebugging && m_runParameters.isQmlDebugging
&& m_runParameters.isCppDebugging) { && m_runParameters.isCppDebugging()) {
using namespace QmlDebug; using namespace QmlDebug;
int qmlServerPort = m_runParameters.qmlServer.port(); int qmlServerPort = m_runParameters.qmlServer.port();
QTC_ASSERT(qmlServerPort > 0, reportFailure(); return); QTC_ASSERT(qmlServerPort > 0, reportFailure(); return);
@@ -562,7 +562,8 @@ void DebuggerRunTool::start()
DebuggerEngine *cppEngine = nullptr; DebuggerEngine *cppEngine = nullptr;
if (!m_engine) { if (!m_engine) {
switch (m_runParameters.cppEngineType) { if (m_runParameters.isCppDebugging()) {
switch (m_runParameters.cppEngineType) {
case GdbEngineType: case GdbEngineType:
cppEngine = createGdbEngine(); cppEngine = createGdbEngine();
break; break;
@@ -582,11 +583,12 @@ void DebuggerRunTool::start()
default: default:
if (!m_runParameters.isQmlDebugging) { if (!m_runParameters.isQmlDebugging) {
reportFailure(DebuggerPlugin::tr("Unable to create a debugging engine. " 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; return;
} }
// Can happen for pure Qml. // Can happen for pure Qml.
break; break;
}
} }
if (m_runParameters.isQmlDebugging) { if (m_runParameters.isQmlDebugging) {
@@ -650,7 +652,7 @@ const DebuggerRunParameters &DebuggerRunTool::runParameters() const
bool DebuggerRunTool::isCppDebugging() const bool DebuggerRunTool::isCppDebugging() const
{ {
return m_runParameters.isCppDebugging; return m_runParameters.isCppDebugging();
} }
bool DebuggerRunTool::isQmlDebugging() const bool DebuggerRunTool::isQmlDebugging() const
@@ -726,7 +728,7 @@ bool DebuggerRunTool::fixupParameters()
rp.debugger.environment.set(var, rp.inferior.environment.value(var)); rp.debugger.environment.set(var, rp.inferior.environment.value(var));
// validate debugger if C++ debugging is enabled // validate debugger if C++ debugging is enabled
if (rp.isCppDebugging && !rp.validationErrors.isEmpty()) { if (rp.isCppDebugging() && !rp.validationErrors.isEmpty()) {
reportFailure(rp.validationErrors.join('\n')); reportFailure(rp.validationErrors.join('\n'));
return false; return false;
} }
@@ -762,7 +764,7 @@ bool DebuggerRunTool::fixupParameters()
if (rp.isQmlDebugging) { if (rp.isQmlDebugging) {
QmlDebug::QmlDebugServicesPreset service; QmlDebug::QmlDebugServicesPreset service;
if (rp.isCppDebugging) { if (rp.isCppDebugging()) {
if (rp.nativeMixedEnabled) { if (rp.nativeMixedEnabled) {
service = QmlDebug::QmlNativeDebuggerServices; service = QmlDebug::QmlNativeDebuggerServices;
} else { } else {
@@ -772,7 +774,7 @@ bool DebuggerRunTool::fixupParameters()
service = QmlDebug::QmlDebuggerServices; service = QmlDebug::QmlDebuggerServices;
} }
if (rp.startMode != AttachExternal && rp.startMode != AttachCrashedExternal) { if (rp.startMode != AttachExternal && rp.startMode != AttachCrashedExternal) {
QString qmlarg = rp.isCppDebugging && rp.nativeMixedEnabled QString qmlarg = rp.isCppDebugging() && rp.nativeMixedEnabled
? QmlDebug::qmlDebugNativeArguments(service, false) ? QmlDebug::qmlDebugNativeArguments(service, false)
: QmlDebug::qmlDebugTcpArguments(service, Port(rp.qmlServer.port())); : QmlDebug::qmlDebugTcpArguments(service, Port(rp.qmlServer.port()));
QtcProcess::addArg(&rp.inferior.commandLineArguments, qmlarg); QtcProcess::addArg(&rp.inferior.commandLineArguments, qmlarg);
@@ -805,7 +807,7 @@ bool DebuggerRunTool::fixupParameters()
if (rp.isNativeMixedDebugging()) if (rp.isNativeMixedDebugging())
rp.inferior.environment.set("QV4_FORCE_INTERPRETER", "1"); rp.inferior.environment.set("QV4_FORCE_INTERPRETER", "1");
if (rp.isCppDebugging && !rp.skipExecutableValidation) if (rp.isCppDebugging() && !rp.skipExecutableValidation)
rp.validateExecutable(); rp.validateExecutable();
return true; return true;
@@ -854,13 +856,13 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, Kit *kit, bool allowTer
m_runParameters.qtPackageSourceLocation = qtVersion->qtPackageSourcePath().toString(); m_runParameters.qtPackageSourceLocation = qtVersion->qtPackageSourcePath().toString();
if (auto aspect = runConfig ? runConfig->extraAspect<DebuggerRunConfigurationAspect>() : nullptr) { if (auto aspect = runConfig ? runConfig->extraAspect<DebuggerRunConfigurationAspect>() : nullptr) {
m_runParameters.isCppDebugging = aspect->useCppDebugger(); if (aspect->useCppDebugger())
m_runParameters.cppEngineType = DebuggerKitInformation::engineType(kit);
m_runParameters.isQmlDebugging = aspect->useQmlDebugger(); m_runParameters.isQmlDebugging = aspect->useQmlDebugger();
m_runParameters.multiProcess = aspect->useMultiProcess(); m_runParameters.multiProcess = aspect->useMultiProcess();
} } else if (m_runParameters.isCppDebugging()) {
if (m_runParameters.isCppDebugging)
m_runParameters.cppEngineType = DebuggerKitInformation::engineType(kit); m_runParameters.cppEngineType = DebuggerKitInformation::engineType(kit);
}
m_runParameters.inferior = runnable(); m_runParameters.inferior = runnable();
// Normalize to work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch'...) // Normalize to work around QTBUG-17529 (QtDeclarative fails with 'File name case mismatch'...)