forked from qt-creator/qt-creator
Debugger: Dissolve createEngine
It was a recursive wrapper taking too many arguments to handle what is at most a two-stage linear process. Making that explicit is shorter and clearer. Change-Id: Ibcb3422ff29b36b2b4df174fcffa8af62c254701 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -500,50 +500,6 @@ void DebuggerRunTool::abortDebugger()
|
|||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
// Re-used for Combined C++/QML engine.
|
|
||||||
DebuggerEngine *createEngine(DebuggerEngineType cppEngineType,
|
|
||||||
DebuggerEngineType et,
|
|
||||||
DebuggerStartMode sm,
|
|
||||||
bool useTerminal,
|
|
||||||
QStringList *errors)
|
|
||||||
{
|
|
||||||
DebuggerEngine *engine = nullptr;
|
|
||||||
switch (et) {
|
|
||||||
case GdbEngineType:
|
|
||||||
engine = createGdbEngine(useTerminal, sm);
|
|
||||||
break;
|
|
||||||
case CdbEngineType:
|
|
||||||
engine = createCdbEngine(errors, sm);
|
|
||||||
break;
|
|
||||||
case PdbEngineType:
|
|
||||||
engine = createPdbEngine();
|
|
||||||
break;
|
|
||||||
case QmlEngineType:
|
|
||||||
engine = createQmlEngine(useTerminal);
|
|
||||||
break;
|
|
||||||
case LldbEngineType:
|
|
||||||
engine = createLldbEngine();
|
|
||||||
break;
|
|
||||||
case QmlCppEngineType: {
|
|
||||||
DebuggerEngine *cppEngine = createEngine(cppEngineType, cppEngineType, sm, useTerminal, errors);
|
|
||||||
if (cppEngine) {
|
|
||||||
engine = createQmlCppEngine(cppEngine, useTerminal);
|
|
||||||
} else {
|
|
||||||
errors->append(DebuggerPlugin::tr("The debugging engine required for combined "
|
|
||||||
"QML/C++ debugging could not be created: %1"));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
errors->append(DebuggerPlugin::tr("Unknown debugger type \"%1\"")
|
|
||||||
.arg(engineTypeName(et)));
|
|
||||||
}
|
|
||||||
if (!engine)
|
|
||||||
errors->append(DebuggerPlugin::tr("Unable to create a debugging engine of the type \"%1\"").
|
|
||||||
arg(engineTypeName(et)));
|
|
||||||
return engine;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool fixupParameters(DebuggerRunParameters &rp, RunControl *runControl, QStringList &m_errors)
|
static bool fixupParameters(DebuggerRunParameters &rp, RunControl *runControl, QStringList &m_errors)
|
||||||
{
|
{
|
||||||
RunConfiguration *runConfig = runControl->runConfiguration();
|
RunConfiguration *runConfig = runControl->runConfiguration();
|
||||||
@@ -823,13 +779,46 @@ void DebuggerRunTool::setupEngine()
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if (Internal::fixupParameters(m_runParameters, runControl(), m_errors)) {
|
if (!Internal::fixupParameters(m_runParameters, runControl(), m_errors)) {
|
||||||
m_engine = createEngine(m_runParameters.cppEngineType,
|
reportFailure(m_errors.join('\n'));
|
||||||
m_runParameters.masterEngineType,
|
return;
|
||||||
m_runParameters.startMode,
|
}
|
||||||
m_runParameters.useTerminal,
|
|
||||||
&m_errors);
|
DebuggerEngine *cppEngine = nullptr;
|
||||||
|
switch (m_runParameters.cppEngineType) {
|
||||||
|
case GdbEngineType:
|
||||||
|
cppEngine = createGdbEngine(m_runParameters.useTerminal, m_runParameters.startMode);
|
||||||
|
break;
|
||||||
|
case CdbEngineType:
|
||||||
|
cppEngine = createCdbEngine(&m_errors, m_runParameters.startMode);
|
||||||
|
break;
|
||||||
|
case LldbEngineType:
|
||||||
|
cppEngine = createLldbEngine();
|
||||||
|
break;
|
||||||
|
case PdbEngineType: // FIXME: Yes, Python counts as C++...
|
||||||
|
cppEngine = createPdbEngine();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
QTC_CHECK(false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (m_runParameters.masterEngineType) {
|
||||||
|
case QmlEngineType:
|
||||||
|
m_engine = createQmlEngine(m_runParameters.useTerminal);
|
||||||
|
break;
|
||||||
|
case QmlCppEngineType:
|
||||||
|
if (cppEngine)
|
||||||
|
m_engine = createQmlCppEngine(cppEngine, m_runParameters.useTerminal);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
m_engine = cppEngine;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_engine) {
|
if (!m_engine) {
|
||||||
|
m_errors.append(DebuggerPlugin::tr("Unable to create a debugging engine of the type \"%1\"").
|
||||||
|
arg(engineTypeName(m_runParameters.masterEngineType)));
|
||||||
reportFailure(m_errors.join('\n'));
|
reportFailure(m_errors.join('\n'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -838,7 +827,6 @@ void DebuggerRunTool::setupEngine()
|
|||||||
"DebuggedExecutable", tr("Debugged executable"),
|
"DebuggedExecutable", tr("Debugged executable"),
|
||||||
[this] { return m_runParameters.inferior.executable; }
|
[this] { return m_runParameters.inferior.executable; }
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
runControl()->setDisplayName(m_runParameters.displayName);
|
runControl()->setDisplayName(m_runParameters.displayName);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user