OSDN Git Service

debugger: fix hex input when changing register values
authorhjk <qtc-committer@nokia.com>
Wed, 14 Sep 2011 11:00:58 +0000 (13:00 +0200)
committerhjk <qthjk@ovi.com>
Wed, 14 Sep 2011 11:09:34 +0000 (13:09 +0200)
Change-Id: I198e1631d488aff9250e3438ed2fade5aa89968b
Reviewed-on: http://codereview.qt-project.org/4888
Reviewed-by: hjk <qthjk@ovi.com>
src/plugins/debugger/gdb/gdbengine.cpp
src/plugins/debugger/registerwindow.cpp

index 344f73d..f664130 100644 (file)
@@ -3611,14 +3611,7 @@ void GdbEngine::reloadRegisters()
 void GdbEngine::setRegisterValue(int nr, const QString &value)
 {
     Register reg = registerHandler()->registers().at(nr);
-    //qDebug() << "NOT IMPLEMENTED: CHANGE REGISTER " << nr << reg.name << ":"
-    //    << value;
-    postCommand("-var-delete \"R@\"");
-    postCommand("-var-create \"R@\" * $" + reg.name);
-    postCommand("-var-assign \"R@\" " + value.toLatin1());
-    postCommand("-var-delete \"R@\"");
-    //postCommand("-data-list-register-values d",
-    //            Discardable, CB(handleRegisterListValues));
+    postCommand("set $" + reg.name  + "=" + value.toLatin1());
     reloadRegisters();
 }
 
index 735894b..04b0670 100644 (file)
@@ -111,7 +111,11 @@ public:
             return;
         IntegerWatchLineEdit *lineEdit = qobject_cast<IntegerWatchLineEdit*>(editor);
         QTC_ASSERT(lineEdit, return);
-        currentEngine()->setRegisterValue(index.row(), lineEdit->text());
+        const int base = currentHandler()->numberBase();
+        QString value = lineEdit->text();
+        if (base == 16 && !value.startsWith("0x"))
+            value = "0x" + value;
+        currentEngine()->setRegisterValue(index.row(), value);
     }
 
     void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,