diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index f234b23aaba4d94739b382a6f7d882a128483f58..3351ea8cf234abff1a45ee9bf8c8b2ce15347e50 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -258,6 +258,7 @@ void GdbEngine::initializeVariables() m_gdbBuildVersion = -1; m_isMacGdb = false; m_isSynchroneous = false; + m_registerNamesListed = false; m_fullToShortName.clear(); m_shortToFullName.clear(); @@ -2416,6 +2417,11 @@ void GdbEngine::handleStackListThreads(const GdbResponse &response) void GdbEngine::reloadRegisters() { + if (!m_registerNamesListed) { + postCommand(_("-data-list-register-names"), CB(handleRegisterListNames)); + m_registerNamesListed = true; + } + if (m_gdbAdapter->isTrkAdapter()) { // FIXME: remove that special case. This is only to prevent // gdb from asking for the values of the fixed point registers @@ -2444,8 +2450,10 @@ void GdbEngine::setRegisterValue(int nr, const QString &value) void GdbEngine::handleRegisterListNames(const GdbResponse &response) { - if (response.resultClass != GdbResultDone) + if (response.resultClass != GdbResultDone) { + m_registerNamesListed = false; return; + } QList<Register> registers; foreach (const GdbMi &item, response.data.findChild("register-names").children()) @@ -4180,7 +4188,6 @@ bool GdbEngine::startGdb(const QStringList &args, const QString &gdb, const QStr postCommand(_("set breakpoint pending on")); postCommand(_("set print elements 10000")); - postCommand(_("-data-list-register-names"), CB(handleRegisterListNames)); //postCommand(_("set substitute-path /var/tmp/qt-x11-src-4.5.0 " // "/home/sandbox/qtsdk-2009.01/qt")); diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index c9e20eae299685f307bce861e251cec626db3cc7..1229cc17d9d759a862a4f33d6cbe3e7592a4f09c 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -121,6 +121,7 @@ private: ////////// General State ////////// DebuggerStartParametersPtr m_startParameters; QSharedPointer<TrkOptions> m_trkOptions; + bool m_registerNamesListed; private: ////////// Gdb Process Management ////////// @@ -461,7 +462,6 @@ private: ////////// Convenience Functions ////////// void showMessageBox(int icon, const QString &title, const QString &text); void debugMessage(const QString &msg); QMainWindow *mainWindow() const; - }; } // namespace Internal