Debugger: Fix engine detection: Add default path for mode.

This commit is contained in:
Friedemann Kleint
2010-03-17 14:54:48 +01:00
parent 195b17979d
commit ac66b70d27

View File

@@ -1007,18 +1007,19 @@ static IDebuggerEngine *debuggerEngineForExecutable(const QString &executable,
#endif #endif
} }
// Figure out the debugger type of a PID // Debugger type for mode
static IDebuggerEngine *debuggerEngineForAttach(QString *errorMessage) static IDebuggerEngine *debuggerEngineForMode(DebuggerStartMode startMode, QString *errorMessage)
{ {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
// Preferably Windows debugger // Preferably Windows debugger for attaching locally.
if (winEngine) if (startMode != StartRemote && winEngine)
return winEngine; return winEngine;
if (gdbEngine) if (gdbEngine)
return gdbEngine; return gdbEngine;
*errorMessage = msgEngineNotAvailable("Gdb Engine"); *errorMessage = msgEngineNotAvailable("Gdb Engine");
return 0; return 0;
#else #else
Q_UNUSED(startMode)
if (!gdbEngine) { if (!gdbEngine) {
*errorMessage = msgEngineNotAvailable("Gdb Engine"); *errorMessage = msgEngineNotAvailable("Gdb Engine");
return 0; return 0;
@@ -1046,7 +1047,7 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
QString errorMessage; QString errorMessage;
QString settingsIdHint; QString settingsIdHint;
// Figure out engine: toolchain, executable or attach // Figure out engine: toolchain, executable, attach or default
const DebuggerStartMode startMode = d->m_startParameters->startMode; const DebuggerStartMode startMode = d->m_startParameters->startMode;
d->m_engine = debuggerEngineForToolChain(d->m_startParameters->toolChainType); d->m_engine = debuggerEngineForToolChain(d->m_startParameters->toolChainType);
@@ -1054,10 +1055,8 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
&& !d->m_startParameters->executable.isEmpty()) && !d->m_startParameters->executable.isEmpty())
d->m_engine = debuggerEngineForExecutable(d->m_startParameters->executable, &errorMessage, &settingsIdHint); d->m_engine = debuggerEngineForExecutable(d->m_startParameters->executable, &errorMessage, &settingsIdHint);
if (d->m_engine == 0 if (d->m_engine == 0)
&& (startMode == AttachExternal || startMode == AttachCrashedExternal d->m_engine = debuggerEngineForMode(startMode, &errorMessage);
|| startMode == AttachCore))
d->m_engine = debuggerEngineForAttach(&errorMessage);
if (!d->m_engine) { if (!d->m_engine) {
emit debuggingFinished(); emit debuggingFinished();