diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp
index d0e3d68c5cb3becaedb682e6d9c519f687cb4c90..5e7ec1294cdaf11a1ff9d6ab48776a0bb14f22ee 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.cpp
+++ b/share/qtcreator/gdbmacros/gdbmacros.cpp
@@ -2013,7 +2013,7 @@ static void qDumpQVariantHelper(const void *data, QString *value,
         *numchild = 0;
         break;
     case QVariant::StringList:
-        *exp = QString(QLatin1String("((QVariant*)%1)->d.data.c"))
+        *exp = QString(QLatin1String("(('"NS"QVariant'*)%1)->d.data.c"))
                     .arg((quintptr)data);
         *numchild = v.toStringList().size();
         break;
@@ -2057,7 +2057,7 @@ static void qDumpQVariant(QDumper &d)
         ba += ") ";
         ba += qPrintable(value);
         P(d, "value", ba);
-        P(d, "valueencoded", "1");
+        P(d, "valueencoded", "4");
     }
     P(d, "type", NS"QVariant");
     P(d, "numchild", (isInvalid ? "0" : "1"));
@@ -2069,7 +2069,7 @@ static void qDumpQVariant(QDumper &d)
             P(d, "exp", qPrintable(exp));
         if (!value.isEmpty()) {
             P(d, "value", value);
-            P(d, "valueencoded", "1");
+            P(d, "valueencoded", "4");
         }
         P(d, "type", v.typeName());
         P(d, "numchild", numchild);
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index d624e084d4d08e92fa4c66cc3c4f3a5c4d29b277..daf2e6e0c0b355dc4a0af37bf785da39efe2dcd2 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -2790,6 +2790,9 @@ static void setWatchDataValue(WatchData &data, const GdbMi &mi,
                 ba = QString::fromUcs4((uint *)ba.data(), ba.size() / 4).toUtf8();
                 ba = '"' + ba + '"';
                 break;
+            case 4: //  base64 encoded 8 bit data 
+                ba = QByteArray::fromBase64(mi.data());
+                break;
         }
        data.setValue(ba);
     } else {
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index 7f6dda7b4158cfe7ccda73fb3212a729838ac4ea..141c7b547396283d785e298e0434d3c899e343bf 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -783,10 +783,18 @@ void testQVariant1()
 
 void testQVariant2()
 {
+    int i = 1;
     QVariant var;
+    var.setValue(1);
+    var.setValue(2);
+    var.setValue(3);
+    var.setValue(QString("Hello"));
+    var.setValue(QString("World"));
+    var.setValue(QString("Hello"));
     var.setValue(QStringList() << "World");
-    var.setValue(QStringList() << "Hello");
-    var.setValue(QStringList() << "World");
+    var.setValue(QStringList() << "World" << "Hello");
+    var.setValue(QStringList() << "Hello" << "Hello");
+    var.setValue(QStringList() << "World" << "Hello" << "Hello");
 #if 0
     QVariant var3;
     QHostAddress ha("127.0.0.1");