From ce9ea72c670c0b4fea2f8be2e4628ed74337d37f Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 14 Sep 2011 12:53:17 +0200 Subject: [PATCH] debugger: allow partial updates to the register set Change-Id: Iafa2f9a235e3c44e0d225a1700a9c4d202f13959 Reviewed-on: http://codereview.qt-project.org/4887 Reviewed-by: hjk <qthjk@ovi.com> --- src/plugins/debugger/cdb/cdbengine.cpp | 6 +++--- src/plugins/debugger/gdb/gdbengine.cpp | 8 ++++---- src/plugins/debugger/registerhandler.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 081a759d497..6ca5c776cbd 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1802,8 +1802,8 @@ void CdbEngine::handlePid(const CdbExtensionCommandPtr &reply) } } -// Parse CDB gdbmi register syntax -static inline Register parseRegister(const GdbMi &gdbmiReg) +// Parse CDB gdbmi register syntax. +static Register parseRegister(const GdbMi &gdbmiReg) { Register reg; reg.name = gdbmiReg.findChild("name").data(); @@ -1813,7 +1813,7 @@ static inline Register parseRegister(const GdbMi &gdbmiReg) reg.name += description.data(); reg.name += ')'; } - reg.value = QString::fromAscii(gdbmiReg.findChild("value").data()); + reg.value = gdbmiReg.findChild("value").data(); return reg; } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index a178e43252c..344f73dfb18 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3651,10 +3651,10 @@ void GdbEngine::handleRegisterListValues(const GdbResponse &response) // 24^done,register-values=[{number="0",value="0xf423f"},...] const GdbMi values = response.data.findChild("register-values"); QTC_ASSERT(registerCount == values.children().size(), return); - for (int i = 0; i != registerCount; ++i) { - const GdbMi &item = values.children().at(i); - GdbMi val = item.findChild("value"); - registers[i].value = _(val.data()); + foreach (const GdbMi &item, values.children()) { + const int number = item.findChild("number").data().toInt(); + if (number >= 0 && number < registerCount) + registers[number].value = item.findChild("value").data(); } registerHandler()->setAndMarkRegisters(registers); } diff --git a/src/plugins/debugger/registerhandler.h b/src/plugins/debugger/registerhandler.h index 5c2ac6adb32..9f58e81b76d 100644 --- a/src/plugins/debugger/registerhandler.h +++ b/src/plugins/debugger/registerhandler.h @@ -54,7 +54,7 @@ public: * base=0 to QString::toULongLong() should work (C-language conventions). * Values that cannot be converted (such as 128bit MMX-registers) are * passed through. */ - QString value; + QByteArray value; int type; bool changed; }; -- GitLab