diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index e2141c8fe770465186dbb38b0f7caaa766b8c6aa..25c545fd6d6ee91d04fd5f63897be02eb6f34d0c 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -439,32 +439,12 @@ QList<Core::IOptionsPage*> DebuggerManager::initializeEngines(const QStringList winEngine = createWinEngine(this, cdbDisabled, &rc); scriptEngine = createScriptEngine(this, &rc); tcfEngine = createTcfEngine(this, &rc); - setDebuggerType(NoDebugger); + m_engine = 0; if (Debugger::Constants::Internal::debug) qDebug() << Q_FUNC_INFO << gdbEngine << winEngine << scriptEngine << rc.size(); return rc; } -void DebuggerManager::setDebuggerType(DebuggerType type) -{ - switch (type) { - case GdbDebugger: - m_engine = gdbEngine; - break; - case ScriptDebugger: - m_engine = scriptEngine; - break; - case WinDebugger: - m_engine = winEngine; - break; - case TcfDebugger: - m_engine = tcfEngine; - break; - case NoDebugger: - m_engine = 0; - } -} - IDebuggerEngine *DebuggerManager::engine() { return m_engine; @@ -798,42 +778,42 @@ void DebuggerManager::setConfigValue(const QString &name, const QVariant &value) } // Figure out the debugger type of an executable -static DebuggerManager::DebuggerType determineDebuggerType(const QString &executable, +static IDebuggerEngine *determineDebuggerEngine(const QString &executable, QString *errorMessage) { if (executable.endsWith(_(".js"))) - return DebuggerManager::ScriptDebugger; + return scriptEngine; #ifndef Q_OS_WIN Q_UNUSED(errorMessage) - return DebuggerManager::GdbDebugger; + return gdbEngine; #else // If a file has PDB files, it has been compiled by VS. QStringList pdbFiles; if (!getPDBFiles(executable, &pdbFiles, errorMessage)) - return DebuggerManager::NoDebugger; + return 0; if (pdbFiles.empty()) - return DebuggerManager::GdbDebugger; + return gdbEngine; // We need the CDB debugger in order to be able to debug VS // executables if (!winEngine) { *errorMessage = DebuggerManager::tr("Debugging VS executables is not supported."); - return DebuggerManager::NoDebugger; + return 0; } - return DebuggerManager::WinDebugger; + return winEngine; #endif } // Figure out the debugger type of a PID -static DebuggerManager::DebuggerType determineDebuggerType(int /* pid */, +static IDebuggerEngine *determineDebuggerEngine(int /* pid */, QString * /*errorMessage*/) { #ifdef Q_OS_WIN // Preferably Windows debugger - return winEngine ? DebuggerManager::WinDebugger : DebuggerManager::GdbDebugger; + return winEngine ? winEngine : gdbEngine; #else - return DebuggerManager::GdbDebugger; + return gdbEngine; #endif } @@ -994,25 +974,23 @@ void DebuggerManager::startNewDebugger(DebuggerRunControl *runControl) emit debugModeRequested(); - DebuggerType type = NoDebugger; QString errorMessage; if (startMode() == AttachExternal) - type = determineDebuggerType(m_attachedPID, &errorMessage); + m_engine = determineDebuggerEngine(m_attachedPID, &errorMessage); else if (startMode() == AttachTcf) - type = TcfDebugger; + m_engine = tcfEngine; else - type = determineDebuggerType(m_executable, &errorMessage); + m_engine = determineDebuggerEngine(m_executable, &errorMessage); - if (type == NoDebugger) { + if (!m_engine) { QMessageBox::warning(mainWindow(), tr("Warning"), tr("Cannot debug '%1': %2").arg(m_executable, errorMessage)); debuggingFinished(); return; } if (Debugger::Constants::Internal::debug) - qDebug() << m_executable << type; + qDebug() << m_executable << m_engine; - setDebuggerType(type); setBusyCursor(false); setStatus(DebuggerProcessStartingUp); if (!m_engine->startDebugger()) { diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index b4e890490985091a844372145fc96b59a60125b0..73b1000a2ea45b82acb9f9b4dba040847d40fb33 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -204,10 +204,6 @@ public: QMainWindow *mainWindow() const { return m_mainWindow; } QLabel *statusLabel() const { return m_statusLabel; } - enum DebuggerType { - NoDebugger, GdbDebugger, ScriptDebugger, WinDebugger, TcfDebugger - }; - public slots: void startNewDebugger(DebuggerRunControl *runControl); void exitDebugger(); @@ -371,7 +367,6 @@ public: private: void init(); - void setDebuggerType(DebuggerType type); void runTest(const QString &fileName); QDockWidget *createDockForWidget(QWidget *widget); Q_SLOT void createNewDock(QWidget *widget); @@ -384,7 +379,6 @@ private: void setToolTipExpression(const QPoint &pos, const QString &exp0); DebuggerRunControl *m_runControl; - DebuggerType m_debuggerType; /// Views QMainWindow *m_mainWindow;