From d4cee56e995af813e0374baaacb746eb270718b2 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Thu, 25 Feb 2010 17:52:34 +0100 Subject: [PATCH] Symbian/Linux: Fix debugger - Switch correctly on GnuPoc-toolchains - Do not lock up on Gdb start. --- src/plugins/debugger/debuggermanager.cpp | 2 ++ src/plugins/debugger/gdb/gdbengine.cpp | 4 ++++ src/plugins/debugger/gdb/trkgdbadapter.cpp | 7 +++++++ src/plugins/debugger/gdb/trkgdbadapter.h | 1 + 4 files changed, 14 insertions(+) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index f2e2dacd6a6..e17d4a98858 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -945,6 +945,8 @@ static IDebuggerEngine *debuggerEngineForToolChain(ProjectExplorer::ToolChain::T case ProjectExplorer::ToolChain::GCCE: case ProjectExplorer::ToolChain::RVCT_ARMV5: case ProjectExplorer::ToolChain::RVCT_ARMV6: + case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC: + case ProjectExplorer::ToolChain::GCCE_GNUPOC: rc = gdbEngine; break; case ProjectExplorer::ToolChain::OTHER: diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 4f186740647..06f218fd334 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1645,6 +1645,8 @@ bool GdbEngine::checkConfiguration(int toolChain, QString *errorMessage, QString case ProjectExplorer::ToolChain::GCCE: case ProjectExplorer::ToolChain::RVCT_ARMV5: case ProjectExplorer::ToolChain::RVCT_ARMV6: + case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC: + case ProjectExplorer::ToolChain::GCCE_GNUPOC: if (!m_trkOptions->check(errorMessage)) { if (settingsPage) *settingsPage = TrkOptionsPage::settingsId(); @@ -1663,6 +1665,8 @@ AbstractGdbAdapter *GdbEngine::createAdapter(const DebuggerStartParametersPtr &s case ProjectExplorer::ToolChain::GCCE: case ProjectExplorer::ToolChain::RVCT_ARMV5: case ProjectExplorer::ToolChain::RVCT_ARMV6: + case ProjectExplorer::ToolChain::RVCT_ARMV5_GNUPOC: + case ProjectExplorer::ToolChain::GCCE_GNUPOC: return new TrkGdbAdapter(this, m_trkOptions); default: break; diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index 063ad2afab3..8f81f9071d3 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp @@ -1671,6 +1671,13 @@ void TrkGdbAdapter::handleTrkVersionsStartGdb(const TrkResult &result) << '.' << int(result.data.at(4)); } logMessage(logMsg); + // As we are called from the TrkDevice handler, do not lock up when shutting + // down the device in case of gdb launch errors. + QTimer::singleShot(0, this, SLOT(slotStartGdb())); +} + +void TrkGdbAdapter::slotStartGdb() +{ QStringList gdbArgs; gdbArgs.append(QLatin1String("--nx")); // Do not read .gdbinit file if (!m_engine->startGdb(gdbArgs, m_options->gdb, TrkOptionsPage::settingsId())) { diff --git a/src/plugins/debugger/gdb/trkgdbadapter.h b/src/plugins/debugger/gdb/trkgdbadapter.h index 1bfe0b91170..acf662fbc2d 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.h +++ b/src/plugins/debugger/gdb/trkgdbadapter.h @@ -213,6 +213,7 @@ private: void handleStop(const TrkResult &result); void handleSupportMask(const TrkResult &result); void handleTrkVersionsStartGdb(const TrkResult &result); + Q_SLOT void slotStartGdb(); void handleDisconnect(const TrkResult &result); void handleDeleteProcess(const TrkResult &result); void handleDeleteProcess2(const TrkResult &result); -- GitLab