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");