forked from qt-creator/qt-creator
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:
@@ -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)
|
||||||
|
@@ -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,29 +479,28 @@ 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()) {
|
return;
|
||||||
reportFailure(errors.join('\n'));
|
}
|
||||||
return;
|
cppEngine = createCdbEngine();
|
||||||
}
|
break;
|
||||||
}
|
case LldbEngineType:
|
||||||
break;
|
cppEngine = createLldbEngine();
|
||||||
case LldbEngineType:
|
break;
|
||||||
cppEngine = createLldbEngine();
|
case PdbEngineType: // FIXME: Yes, Python counts as C++...
|
||||||
break;
|
cppEngine = createPdbEngine();
|
||||||
case PdbEngineType: // FIXME: Yes, Python counts as C++...
|
break;
|
||||||
cppEngine = createPdbEngine();
|
default:
|
||||||
break;
|
QTC_CHECK(false);
|
||||||
default:
|
break;
|
||||||
QTC_CHECK(false);
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (m_runParameters.masterEngineType) {
|
switch (m_runParameters.masterEngineType) {
|
||||||
|
Reference in New Issue
Block a user