Debugger: Simplify CdbEngine construction

Moving the knowledge that this won't work well outside windows
kind of decreases encapsulation, but that's not really worth the
complication of the error handling here.

Change-Id: Idcb6f6d64f33ee8c49a01e62e20aad16d3f01b86
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2017-09-28 11:27:43 +02:00
parent 6d919cd85a
commit af63f488c2
2 changed files with 26 additions and 39 deletions

View File

@@ -194,22 +194,10 @@ public:
CdbEngine::CommandHandler handler; CdbEngine::CommandHandler handler;
}; };
static inline bool validMode(DebuggerStartMode sm) // Accessed by DebuggerRunTool
DebuggerEngine *createCdbEngine()
{ {
return sm != NoStartMode; return new CdbEngine;
}
// Accessed by RunControlFactory
DebuggerEngine *createCdbEngine(QStringList *errors, DebuggerStartMode sm)
{
if (HostOsInfo::isWindowsHost()) {
if (validMode(sm))
return new CdbEngine();
errors->append(CdbEngine::tr("Internal error: Invalid start parameters passed for the CDB engine."));
} else {
errors->append(CdbEngine::tr("Unsupported CDB host system."));
}
return 0;
} }
void addCdbOptionPages(QList<Core::IOptionsPage *> *opts) void addCdbOptionPages(QList<Core::IOptionsPage *> *opts)

View File

@@ -76,7 +76,7 @@ enum { debug = 0 };
namespace Debugger { namespace Debugger {
namespace Internal { namespace Internal {
DebuggerEngine *createCdbEngine(QStringList *error, DebuggerStartMode sm); DebuggerEngine *createCdbEngine();
DebuggerEngine *createGdbEngine(); DebuggerEngine *createGdbEngine();
DebuggerEngine *createPdbEngine(); DebuggerEngine *createPdbEngine();
DebuggerEngine *createQmlEngine(bool useTerminal); DebuggerEngine *createQmlEngine(bool useTerminal);
@@ -479,19 +479,17 @@ void DebuggerRunTool::start()
runControl()->setDisplayName(m_runParameters.displayName); runControl()->setDisplayName(m_runParameters.displayName);
DebuggerEngine *cppEngine = nullptr; DebuggerEngine *cppEngine = nullptr;
if (!m_engine) {
switch (m_runParameters.cppEngineType) { switch (m_runParameters.cppEngineType) {
case GdbEngineType: case GdbEngineType:
cppEngine = createGdbEngine(); cppEngine = createGdbEngine();
break; break;
case CdbEngineType: { case CdbEngineType:
QStringList errors; if (!HostOsInfo::isWindowsHost()) {
cppEngine = createCdbEngine(&errors, m_runParameters.startMode); reportFailure(tr("Unsupported CDB host system."));
if (!errors.isEmpty()) {
reportFailure(errors.join('\n'));
return; return;
} }
} cppEngine = createCdbEngine();
break; break;
case LldbEngineType: case LldbEngineType:
cppEngine = createLldbEngine(); cppEngine = createLldbEngine();
@@ -503,6 +501,7 @@ void DebuggerRunTool::start()
QTC_CHECK(false); QTC_CHECK(false);
break; break;
} }
}
switch (m_runParameters.masterEngineType) { switch (m_runParameters.masterEngineType) {
case QmlEngineType: case QmlEngineType: