Debugger: Start to disentangle DebuggerStartParameter setup

Change-Id: Ife19d506146806d965a2552b1390fae4545b3459
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
hjk
2015-02-10 13:02:46 +01:00
parent e6104777d7
commit 807c3a5ad2

View File

@@ -381,41 +381,6 @@ RunControl *DebuggerRunControlFactory::create
return doCreate(sp, runConfiguration, errorMessage); return doCreate(sp, runConfiguration, errorMessage);
} }
static bool fixupEngineTypes(DebuggerStartParameters &sp, RunConfiguration *rc, QString *errorMessage)
{
if (sp.masterEngineType != NoEngineType)
return true;
if (sp.executable.endsWith(_(".py"))) {
sp.masterEngineType = PdbEngineType;
return true;
}
if (rc) {
DebuggerRunConfigurationAspect *aspect
= rc->extraAspect<Debugger::DebuggerRunConfigurationAspect>();
if (const Target *target = rc->target())
if (!DebuggerRunControlFactory::fillParametersFromKit(&sp, target->kit(), errorMessage))
return false;
const bool useCppDebugger = aspect->useCppDebugger() && (sp.languages & CppLanguage);
const bool useQmlDebugger = aspect->useQmlDebugger() && (sp.languages & QmlLanguage);
if (useQmlDebugger) {
if (useCppDebugger) {
sp.masterEngineType = QmlCppEngineType;
sp.firstSlaveEngineType = sp.cppEngineType;
sp.secondSlaveEngineType = QmlCppEngineType;
} else {
sp.masterEngineType = QmlEngineType;
}
} else {
sp.masterEngineType = sp.cppEngineType;
}
return true;
}
sp.masterEngineType = sp.cppEngineType;
return true;
}
DebuggerRunControl *DebuggerRunControlFactory::doCreate DebuggerRunControl *DebuggerRunControlFactory::doCreate
(const DebuggerStartParameters &sp0, RunConfiguration *rc, QString *errorMessage) (const DebuggerStartParameters &sp0, RunConfiguration *rc, QString *errorMessage)
{ {
@@ -435,9 +400,36 @@ DebuggerRunControl *DebuggerRunControlFactory::doCreate
} }
} }
if (!fixupEngineTypes(sp, rc, errorMessage)) if (sp.masterEngineType == NoEngineType)
return 0; return 0;
if (sp.executable.endsWith(_(".py"))) {
sp.masterEngineType = PdbEngineType;
} else {
if (rc) {
DebuggerRunConfigurationAspect *aspect
= rc->extraAspect<Debugger::DebuggerRunConfigurationAspect>();
if (const Target *target = rc->target())
if (!DebuggerRunControlFactory::fillParametersFromKit(&sp, target->kit(), errorMessage))
return 0;
const bool useCppDebugger = aspect->useCppDebugger() && (sp.languages & CppLanguage);
const bool useQmlDebugger = aspect->useQmlDebugger() && (sp.languages & QmlLanguage);
if (useQmlDebugger) {
if (useCppDebugger) {
sp.masterEngineType = QmlCppEngineType;
sp.firstSlaveEngineType = sp.cppEngineType;
sp.secondSlaveEngineType = QmlCppEngineType;
} else {
sp.masterEngineType = QmlEngineType;
}
} else {
sp.masterEngineType = sp.cppEngineType;
}
} else {
sp.masterEngineType = sp.cppEngineType;
}
}
QString error; QString error;
DebuggerEngine *engine = createEngine(sp.masterEngineType, sp, &error); DebuggerEngine *engine = createEngine(sp.masterEngineType, sp, &error);
if (!engine) { if (!engine) {