Debugger: Replace RunParameter::languagues by individual bools

There was almost 1:1 overlap with DebuggerRunTool::is{Cpp,Qml}Debugging,
use one version only.

Change-Id: I4a8f2b7005d3f2e440cdab3eaf6ac476af894308
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2017-09-20 16:34:54 +02:00
parent 32b1244b2a
commit 0a226c77b0
5 changed files with 49 additions and 73 deletions

View File

@@ -187,7 +187,8 @@ void DebuggerRunTool::setStartMode(DebuggerStartMode startMode)
{
if (startMode == AttachToQmlServer) {
m_runParameters.startMode = AttachToRemoteProcess;
m_runParameters.languages = QmlLanguage;
m_runParameters.isCppDebugging = false;
m_runParameters.isQmlDebugging = true;
m_runParameters.masterEngineType = QmlEngineType;
m_runParameters.closeMode = KillAtClose;
@@ -455,7 +456,7 @@ void DebuggerRunTool::start()
}
// QML and/or mixed are not prepared for it.
setSupportsReRunning(!(m_runParameters.languages & QmlLanguage));
setSupportsReRunning(!m_runParameters.isQmlDebugging);
// FIXME: Disabled due to Android. Make Android device report available ports instead.
// int portsUsed = portsUsedByDebugger();
@@ -581,6 +582,16 @@ const DebuggerRunParameters &DebuggerRunTool::runParameters() const
return m_runParameters;
}
bool DebuggerRunTool::isCppDebugging() const
{
return m_runParameters.isCppDebugging;
}
bool DebuggerRunTool::isQmlDebugging() const
{
return m_runParameters.isQmlDebugging;
}
int DebuggerRunTool::portsUsedByDebugger() const
{
return isCppDebugging() + isQmlDebugging();
@@ -625,17 +636,13 @@ bool DebuggerRunTool::fixupParameters()
if (rp.inferior.environment.hasKey(var))
rp.debugger.environment.set(var, rp.inferior.environment.value(var));
// This can happen e.g. when started from the command line.
if (rp.languages == NoLanguage)
rp.languages = CppLanguage;
// validate debugger if C++ debugging is enabled
if (rp.languages & CppLanguage && !rp.validationErrors.isEmpty()) {
if (rp.isCppDebugging && !rp.validationErrors.isEmpty()) {
reportFailure(rp.validationErrors.join('\n'));
return false;
}
if (rp.languages & QmlLanguage) {
if (rp.isQmlDebugging) {
if (device() && device()->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) {
if (rp.qmlServer.port() <= 0) {
rp.qmlServer = ProjectExplorer::urlFromLocalHostAndFreePort();
@@ -665,9 +672,9 @@ bool DebuggerRunTool::fixupParameters()
}
if (rp.masterEngineType == NoEngineType) {
if (rp.languages & QmlLanguage) {
if (rp.isQmlDebugging) {
QmlDebug::QmlDebugServicesPreset service;
if (rp.languages & CppLanguage) {
if (rp.isCppDebugging) {
if (rp.nativeMixedEnabled) {
service = QmlDebug::QmlNativeDebuggerServices;
} else {
@@ -679,7 +686,7 @@ bool DebuggerRunTool::fixupParameters()
service = QmlDebug::QmlDebuggerServices;
}
if (rp.startMode != AttachExternal && rp.startMode != AttachCrashedExternal) {
QString qmlarg = (rp.languages & CppLanguage) && 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);
@@ -724,31 +731,13 @@ bool DebuggerRunTool::fixupParameters()
return true;
}
static DebuggerRunConfigurationAspect *debuggerAspect(const RunControl *runControl)
{
return runControl->runConfiguration()->extraAspect<DebuggerRunConfigurationAspect>();
}
static bool cppDebugging(const RunControl *runControl)
{
auto aspect = debuggerAspect(runControl);
return aspect ? aspect->useCppDebugger() : true; // For cases like valgrind-with-gdb.
}
static bool qmlDebugging(const RunControl *runControl)
{
auto aspect = debuggerAspect(runControl);
return aspect ? aspect->useQmlDebugger() : false; // For cases like valgrind-with-gdb.
}
/// DebuggerRunTool
DebuggerRunTool::DebuggerRunTool(RunControl *runControl)
: RunWorker(runControl),
m_isCppDebugging(cppDebugging(runControl)),
m_isQmlDebugging(qmlDebugging(runControl))
: RunWorker(runControl)
{
setDisplayName("DebuggerRunTool");
RunConfiguration *runConfig = runControl->runConfiguration();
runControl->setIcon(ProjectExplorer::Icons::DEBUG_START_SMALL_TOOLBAR);
runControl->setPromptToStop([](bool *optionalPrompt) {
return RunControl::showPromptToStopDialog(
@@ -769,10 +758,14 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl)
FileUtils::normalizePathName(m_runParameters.inferior.workingDirectory);
}
RunConfiguration *runConfig = runControl->runConfiguration();
QTC_ASSERT(runConfig, return);
if (auto aspect = runConfig ? runConfig->extraAspect<DebuggerRunConfigurationAspect>() : nullptr) {
m_runParameters.isCppDebugging = aspect->useCppDebugger();
m_runParameters.isQmlDebugging = aspect->useQmlDebugger();
m_runParameters.multiProcess = aspect->useMultiProcess();
}
m_runParameters.displayName = runConfig->displayName();
if (runConfig)
m_runParameters.displayName = runConfig->displayName();
const Kit *kit = runConfig->target()->kit();
QTC_ASSERT(kit, return);
@@ -784,7 +777,8 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl)
if (!envBinary.isEmpty())
m_runParameters.debugger.executable = QString::fromLocal8Bit(envBinary);
if (Project *project = runConfig->target()->project()) {
Project *project = runConfig ? runConfig->target()->project() : nullptr;
if (project) {
m_runParameters.projectSourceDirectory = project->projectDirectory().toString();
m_runParameters.projectSourceFiles = project->files(Project::SourceFiles);
}
@@ -822,16 +816,6 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl)
m_runParameters.masterEngineType = PdbEngineType;
}
}
if (auto debuggerAspect = runConfig->extraAspect<DebuggerRunConfigurationAspect>()) {
m_runParameters.multiProcess = debuggerAspect->useMultiProcess();
if (m_runParameters.languages == NoLanguage) {
if (debuggerAspect->useCppDebugger())
m_runParameters.languages |= CppLanguage;
if (debuggerAspect->useQmlDebugger())
m_runParameters.languages |= QmlLanguage;
}
}
}
DebuggerEngine *DebuggerRunTool::activeEngine() const