From ac66b70d273738013a6474518d3b42c47e32d244 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 17 Mar 2010 14:54:48 +0100
Subject: [PATCH] Debugger: Fix engine detection: Add default path for mode.

---
 src/plugins/debugger/debuggermanager.cpp | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 4339a0f29df..41ea1a7d379 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -1007,18 +1007,19 @@ static IDebuggerEngine *debuggerEngineForExecutable(const QString &executable,
 #endif
 }
 
-// Figure out the debugger type of a PID
-static IDebuggerEngine *debuggerEngineForAttach(QString *errorMessage)
+// Debugger type for mode
+static IDebuggerEngine *debuggerEngineForMode(DebuggerStartMode startMode, QString *errorMessage)
 {
 #ifdef Q_OS_WIN
-    // Preferably Windows debugger
-    if (winEngine)
+    // Preferably Windows debugger for attaching locally.
+    if (startMode != StartRemote && winEngine)
         return winEngine;
     if (gdbEngine)
         return gdbEngine;
     *errorMessage = msgEngineNotAvailable("Gdb Engine");
     return 0;
 #else
+    Q_UNUSED(startMode)
     if (!gdbEngine) {
         *errorMessage = msgEngineNotAvailable("Gdb Engine");
         return 0;
@@ -1046,7 +1047,7 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
     QString errorMessage;
     QString settingsIdHint;
 
-    // Figure out engine: toolchain, executable or attach
+    // Figure out engine: toolchain, executable, attach or default
     const DebuggerStartMode startMode = d->m_startParameters->startMode;
     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_engine = debuggerEngineForExecutable(d->m_startParameters->executable, &errorMessage, &settingsIdHint);
 
-    if (d->m_engine == 0
-        && (startMode == AttachExternal || startMode == AttachCrashedExternal
-            || startMode == AttachCore))
-        d->m_engine = debuggerEngineForAttach(&errorMessage);
+    if (d->m_engine == 0)
+        d->m_engine = debuggerEngineForMode(startMode, &errorMessage);
 
     if (!d->m_engine) {
         emit debuggingFinished();
-- 
GitLab