diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp
index 145404763a751dd492de6361572274e1f0cb713a..40a1aa3fbbdc336e410682f5fd93c8e51bd7e7ff 100644
--- a/tests/auto/debugger/tst_gdb.cpp
+++ b/tests/auto/debugger/tst_gdb.cpp
@@ -208,32 +208,37 @@ private slots:
     void dump_std_vector();
     void dump_std_wstring();
     void dump_Foo();
-    void dump_QAbstractItemModel();
+    //void dump_QImageData();
     void dump_QAbstractItemAndModelIndex();
+    void dump_QAbstractItemModel();
     void dump_QByteArray();
     void dump_QChar();
-    void dump_QHash_int_int();
+    void dump_QDateTime();
+    void dump_QDir();
+    void dump_QFile();
+    void dump_QFileInfo();
     void dump_QHash_QString_QString();
+    void dump_QHash_int_int();
     void dump_QImage();
-    //void dump_QImageData();
     void dump_QLinkedList_int();
+    void dump_QList_Int3();
+    void dump_QList_QString();
+    void dump_QList_QString3();
     void dump_QList_char();
     void dump_QList_char_star();
     void dump_QList_int();
     void dump_QList_int_star();
-    void dump_QList_QString();
-    void dump_QList_QString3();
-    void dump_QList_Int3();
-    void dump_QMap_int_int();
+    void dump_QLocale();
     void dump_QMap_QString_QString();
+    void dump_QMap_int_int();
     void dump_QObject();
     void dump_QPixmap();
     void dump_QPoint();
     void dump_QRect();
+    void dump_QSet_Int3();
+    void dump_QSet_int();
     void dump_QSharedPointer();
     void dump_QSize();
-    void dump_QSet_int();
-    void dump_QSet_Int3();
     void dump_QStack();
     void dump_QString();
     void dump_QStringList();
@@ -244,18 +249,10 @@ private slots:
     void dump_QWeakPointer_12();
     void dump_QWeakPointer_13();
     void dump_QWeakPointer_2();
+    void dump_QWidget();
 
 public slots:
     void dumperCompatibility();
-#if 0
-    void dump_QDateTime();
-    void dump_QDir();
-    void dump_QFile();
-    void dump_QFileInfo();
-    void dump_QLinkedList();
-    void dump_QLocale();
-    void dump_QPixmap();
-#endif
 
 private:
 #if 0
@@ -305,47 +302,47 @@ void tst_Gdb::dumperCompatibility()
     QCOMPARE(size_t(&v->array), qVectorDataSize);
 }
 
-#if 0
-static const QByteArray utfToBase64(const QString &string)
+static const QByteArray utfToHex(const QString &string)
 {
-    return QByteArray(reinterpret_cast<const char *>(string.utf16()), 2 * string.size()).toBase64();
+    return QByteArray(reinterpret_cast<const char *>(string.utf16()),
+        2 * string.size()).toHex();
 }
 
-static const char *boolToVal(bool b)
+static const QByteArray specQString(const QString &str)
 {
-    return b ? "'true'" : "'false'";
+    return "valueencoded='7',value='" + utfToHex(str).toHex() + "',"
+        "type='"NS"QString',numchild='0'";
 }
 
-static const QByteArray ptrToBa(const void *p, bool symbolicNull = true)
+static const QByteArray specQChar(QChar ch)
 {
-    return QByteArray().append(p == 0 && symbolicNull ?
-        "<null>" :
-        QByteArray("0x") + QByteArray::number((quintptr) p, 16));
+    return "valueencoded='7',value='" +
+         utfToHex(QString(QLatin1String("'%1' (%2, 0x%3)")).
+                   arg(ch).arg(ch.unicode()).arg(ch.unicode(), 0, 16)) + "',"
+        "type='"NS"QChar',numchild='0'";
 }
 
-static const QByteArray generateQStringSpec(const QString &str)
+static const char *boolToVal(bool b)
 {
-    return QByteArray("value='%',type='"NS"QString',numchild='0',valueencoded='2'")
-        << utfToBase64(str);
+    return b ? "'true'" : "'false'";
 }
 
-static const QByteArray generateQCharSpec(const QChar& ch)
+static const QByteArray specBool(bool b)
 {
-    return QByteArray("value='%',valueencoded='2',type='"NS"QChar',numchild='0'")
-        << utfToBase64(QString(QLatin1String("'%1' (%2, 0x%3)")).
-                   arg(ch).arg(ch.unicode()).arg(ch.unicode(), 0, 16));
+    return "value=" + QByteArray(boolToVal(b)) + ",type='bool',numchild='0'";
 }
 
-static const QByteArray generateBoolSpec(bool b)
+static const QByteArray specLong(long n)
 {
-    return QByteArray("value=%,type='bool',numchild='0'")
-        << boolToVal(b);
+    return "value='" + QByteArray::number(qlonglong(n)) + "',type='long',numchild='0'";
 }
 
-static const QByteArray generateLongSpec(long n)
+#if 0
+static const QByteArray ptrToBa(const void *p, bool symbolicNull = true)
 {
-    return QByteArray("value='%',type='long',numchild='0'")
-        << N(qlonglong(n));
+    return QByteArray().append(p == 0 && symbolicNull ?
+        "<null>" :
+        QByteArray("0x") + QByteArray::number((quintptr) p, 16));
 }
 
 static const QByteArray generateIntSpec(int n)
@@ -383,7 +380,7 @@ template <> const QByteArray valToString(const int &n)
 }
 template <> const QByteArray valToString(const QString &s)
 {
-    return QByteArray(utfToBase64(s)).append("',valueencoded='2");
+    return QByteArray(utfToHex(s)).append("',valueencoded='2");
 }
 template <> const QByteArray valToString(int * const &p)
 {
@@ -990,6 +987,9 @@ private:
 };
 
 
+
+///////////////////////////// QAbstractItemAndModelIndex //////////////////////////
+
 //    /* A */ QStringListModel m(QStringList() << "item1" << "item2" << "item3");
 //    /* B */ index = m.index(2, 0);
 void dump_QAbstractItemAndModelIndex()
@@ -1056,7 +1056,7 @@ QByteArray dump_QAbstractItemModelHelper(QAbstractItemModel &m)
             << N(m.rowCount())
             << N(m.columnCount())
             << address
-            << utfToBase64(m.objectName())
+            << utfToHex(m.objectName())
             << m.metaObject()->className();
 
     for (int row = 0; row < m.rowCount(); ++row) {
@@ -1067,7 +1067,7 @@ QByteArray dump_QAbstractItemModelHelper(QAbstractItemModel &m)
                 "type='"NS"QAbstractItem'}")
                 << N(row)
                 << N(column)
-                << utfToBase64(m.data(mi).toString())
+                << utfToHex(m.data(mi).toString())
                 << N(mi.row())
                 << N(mi.column())
                 << ptrToBa(mi.internalPointer())
@@ -1123,6 +1123,9 @@ void tst_Gdb::dump_QAbstractItemModel()
     #endif
 }
 
+
+///////////////////////////// QByteArray /////////////////////////////////
+
 void dump_QByteArray()
 {
     /* A */ QByteArray ba;                       // Empty object.
@@ -1168,6 +1171,9 @@ void tst_Gdb::dump_QByteArray()
             "local.ba");
 }
 
+
+///////////////////////////// QChar /////////////////////////////////
+
 void dump_QChar()
 {
     /* A */ QChar c('X');               // Printable ASCII character.
@@ -1207,177 +1213,196 @@ void tst_Gdb::dump_QChar()
         "value=''?', ucs=63',numchild='0'}");
 }
 
-#if 0
-void tst_Gdb::dump_QDateTimeHelper(const QDateTime &d)
-{
-    QByteArray value;
-    if (d.isNull())
-        value = "value='(null)'";
-    else 
-        value = QByteArray("value='%',valueencoded='2'")
-            << utfToBase64(d.toString());
-
-    QByteArray expected = QByteArray("%,type='$T',numchild='3',children=["
-        "{name='isNull',%},"
-        "{name='toTime_t',%},"
-        "{name='toString',%},"
-        "{name='toString_(ISO)',%},"
-        "{name='toString_(SystemLocale)',%},"
-        "{name='toString_(Locale)',%}]")
-            << value
-            << generateBoolSpec(d.isNull())
-            << generateLongSpec((d.toTime_t()))
-            << generateQStringSpec(d.toString())
-            << generateQStringSpec(d.toString(Qt::ISODate))
-            << generateQStringSpec(d.toString(Qt::SystemLocaleDate))
-            << generateQStringSpec(d.toString(Qt::LocaleDate));
-    testDumper(expected, &d, NS"QDateTime", true);
+
+///////////////////////////// QDateTime /////////////////////////////////
+
+void dump_QDateTime()
+{
+    #ifndef QT_NO_DATESTRING
+    /* A */ QDateTime d; 
+    /* B */ d = QDateTime::fromString("M5d21y7110:31:02", "'M'M'd'd'y'yyhh:mm:ss");
+    /* C */ (void) d.isNull();
+    #endif
 }
 
 void tst_Gdb::dump_QDateTime()
 {
-    // Case 1: Null object.
-    QDateTime d;
-    dump_QDateTimeHelper(d);
-
-    // Case 2: Non-null object.
-    d = QDateTime::currentDateTime();
-    dump_QDateTimeHelper(d);
+    #ifndef QT_NO_DATESTRING
+    prepare("dump_QDateTime");
+    if (checkUninitialized)
+        run("A","{iname='local.d',name='d',"
+            "type='"NS"QDateTime',value='<invalid>',"
+            "numchild='0'}");
+    next();
+    run("B", "{iname='local.d',name='d',type='"NS"QDateTime',"
+          "valueencoded='7',value='-',numchild='3',children=["
+            "{name='isNull',type='bool',value='true',numchild='0'},"
+            "{name='toTime_t',type='unsigned int',value='4294967295',numchild='0'},"
+            "{name='toString',type='myns::QString',valueencoded='7',"
+                "value='',numchild='0'},"
+            "{name='(ISO)',type='myns::QString',valueencoded='7',"
+                "value='',numchild='0'},"
+            "{name='(SystemLocale)',type='myns::QString',valueencoded='7',"
+                "value='',numchild='0'},"
+            "{name='(Locale)',type='myns::QString',valueencoded='7',"
+                "value='',numchild='0'},"
+            "{name='toUTC',type='myns::QDateTime',valueencoded='7',"
+                "value='',numchild='3'},"
+            "{name='toLocalTime',type='myns::QDateTime',valueencoded='7',"
+                "value='',numchild='3'}"
+            "]}",
+          "local.d");
+    next();
+    run("C", "{iname='local.d',name='d',type='"NS"QDateTime',"
+          "valueencoded='7',value='-',"
+                "numchild='3',children=["
+            "{name='isNull',type='bool',value='false',numchild='0'},"
+            "{name='toTime_t',type='unsigned int',value='43666262',numchild='0'},"
+            "{name='toString',type='myns::QString',valueencoded='7',"
+                "value='-',numchild='0'},"
+            "{name='(ISO)',type='myns::QString',valueencoded='7',"
+                "value='-',numchild='0'},"
+            "{name='(SystemLocale)',type='myns::QString',valueencoded='7',"
+                "value='-',numchild='0'},"
+            "{name='(Locale)',type='myns::QString',valueencoded='7',"
+                "value='-',numchild='0'},"
+            "{name='toUTC',type='myns::QDateTime',valueencoded='7',"
+                "value='-',numchild='3'},"
+            "{name='toLocalTime',type='myns::QDateTime',valueencoded='7',"
+                "value='-',numchild='3'}"
+            "]}",
+          "local.d");
+    #endif
 }
 
+
+///////////////////////////// QDir /////////////////////////////////
+
+void dump_QDir()
+{
+    /* A */ QDir dir = QDir::current(); // Case 1: Current working directory.
+    /* B */ dir = QDir::root();         // Case 2: Root directory.
+    /* C */ (void) dir.absolutePath(); }
+
 void tst_Gdb::dump_QDir()
 {
-    // Case 1: Current working directory.
-    QDir dir = QDir::current();
-    testDumper(QByteArray("value='%',valueencoded='2',type='"NS"QDir',numchild='3',"
-        "children=[{name='absolutePath',%},{name='canonicalPath',%}]")
-            << utfToBase64(dir.absolutePath())
-            << generateQStringSpec(dir.absolutePath())
-            << generateQStringSpec(dir.canonicalPath()),
-        &dir, NS"QDir", true);
-
-    // Case 2: Root directory.
-    dir = QDir::root();
-    testDumper(QByteArray("value='%',valueencoded='2',type='"NS"QDir',numchild='3',"
-        "children=[{name='absolutePath',%},{name='canonicalPath',%}]")
-            << utfToBase64(dir.absolutePath())
-            << generateQStringSpec(dir.absolutePath())
-            << generateQStringSpec(dir.canonicalPath()),
-        &dir, NS"QDir", true);
-}
-
-void tst_Gdb::dump_QFileHelper(const QString &name, bool exists)
-{
-    QFile file(name);
-    QByteArray filenameAsBase64 = utfToBase64(name);
-    testDumper(QByteArray("value='%',valueencoded='2',type='$T',numchild='2',"
-        "children=[{name='fileName',value='%',type='"NS"QString',"
-        "numchild='0',valueencoded='2'},"
-        "{name='exists',value=%,type='bool',numchild='0'}]")
-            << filenameAsBase64 << filenameAsBase64 << boolToVal(exists),
-        &file, NS"QFile", true);
+    prepare("dump_QDir");
+    if (checkUninitialized)
+        run("A","{iname='local.dir',name='dir',"
+            "type='"NS"QDir',value='<invalid>',"
+            "numchild='0'}");
+    next();
+    run("B", "{iname='local.dir',name='dir',type='"NS"QDir',"
+               "valueencoded='7',value='-',numchild='2',children=["
+                  "{name='absolutePath',type='"NS"QString',"
+                    "valueencoded='7',value='-',numchild='0'},"
+                  "{name='canonicalPath',type='"NS"QString',"
+                    "valueencoded='7',value='-',numchild='0'}]}",
+                "local.dir");
+    next();
+    run("C", "{iname='local.dir',name='dir',type='"NS"QDir',"
+               "valueencoded='7',value='-',numchild='2',children=["
+                  "{name='absolutePath',type='"NS"QString',"
+                    "valueencoded='7',value='-',numchild='0'},"
+                  "{name='canonicalPath',type='"NS"QString',"
+                    "valueencoded='7',value='-',numchild='0'}]}",
+                "local.dir");
 }
 
+
+///////////////////////////// QFile /////////////////////////////////
+
+void dump_QFile()
+{
+    /* A */ QFile file1(""); // Case 1: Empty file name => Does not exist.
+    /* B */ QTemporaryFile file2; // Case 2: File that is known to exist.
+            file2.open();
+    /* C */ QFile file3("jfjfdskjdflsdfjfdls");
+    /* D */ (void) (file1.fileName() + file2.fileName() + file3.fileName()); }
+
 void tst_Gdb::dump_QFile()
 {
-    // Case 1: Empty file name => Does not exist.
-    dump_QFileHelper("", false);
+    prepare("dump_QFile");
+    next(4);
+    run("D", "{iname='local.file1',name='file1',type='"NS"QFile',"
+            "value='',valueencoded='7',numchild='2',children=["
+                "{name='fileName',type='"NS"QString',"
+                    "valueencoded='7',value='',numchild='0'},"
+                "{name='exists',type='bool',value='false',numchild='0'}"
+            "]},"
+        "{iname='local.file2',name='file2',type='"NS"QTemporaryFile',"
+            "value='-',valueencoded='7',numchild='2',children=["
+                "{name='fileName',type='"NS"QString',"
+                    "valueencoded='7',value='-',numchild='0'},"
+                "{name='exists',type='bool',value='true',numchild='0'}"
+            "]},"
+        "{iname='local.file3',name='file3',type='"NS"QFile',"
+            "value='-',valueencoded='7',numchild='2',children=["
+                "{name='fileName',type='"NS"QString',"
+                    "valueencoded='7',value='-',numchild='0'},"
+                "{name='exists',type='bool',value='false',numchild='0'}"
+            "]}",
+        "local.file1,local.file2,local.file3");
+}
 
-    // Case 2: File that is known to exist.
-    QTemporaryFile file;
-    file.open();
-    dump_QFileHelper(file.fileName(), true);
 
-    // Case 3: File with a name that most likely does not exist.
-    dump_QFileHelper("jfjfdskjdflsdfjfdls", false);
-}
+///////////////////////////// QFileInfo /////////////////////////////////
+
+void dump_QFileInfo()
+{
+    /* A */ QFileInfo fi(".");
+    /* B */ (void) fi.baseName(); }
 
 void tst_Gdb::dump_QFileInfo()
 {
     QFileInfo fi(".");
-    QByteArray expected("value='%',valueencoded='2',type='$T',numchild='3',"
+    prepare("dump_QFileInfo");
+    next();
+    run("B", "{iname='local.image',name='image',type='"NS"QFileInfo',"
+        "value='" + utfToHex(fi.filePath()) + "',valueencoded='2',numchild='3',"
         "children=["
-        "{name='absolutePath',%},"
-        "{name='absoluteFilePath',%},"
-        "{name='canonicalPath',%},"
-        "{name='canonicalFilePath',%},"
-        "{name='completeBaseName',%},"
-        "{name='completeSuffix',%},"
-        "{name='baseName',%},"
-#ifdef QX
-        "{name='isBundle',%},"
-        "{name='bundleName',%},"
-#endif
-        "{name='fileName',%},"
-        "{name='filePath',%},"
-        "{name='group',%},"
-        "{name='owner',%},"
-        "{name='path',%},"
-        "{name='groupid',%},"
-        "{name='ownerid',%},"
-        "{name='permissions',%},"
-        "{name='caching',%},"
-        "{name='exists',%},"
-        "{name='isAbsolute',%},"
-        "{name='isDir',%},"
-        "{name='isExecutable',%},"
-        "{name='isFile',%},"
-        "{name='isHidden',%},"
-        "{name='isReadable',%},"
-        "{name='isRelative',%},"
-        "{name='isRoot',%},"
-        "{name='isSymLink',%},"
-        "{name='isWritable',%},"
-        "{name='created',value='%',valueencoded='2',%,"
-            "type='"NS"QDateTime',numchild='1'},"
-        "{name='lastModified',value='%',valueencoded='2',%,"
-            "type='"NS"QDateTime',numchild='1'},"
-        "{name='lastRead',value='%',valueencoded='2',%,"
-            "type='"NS"QDateTime',numchild='1'}]");
-
-    expected <<= utfToBase64(fi.filePath());
-    expected <<= generateQStringSpec(fi.absolutePath());
-    expected <<= generateQStringSpec(fi.absoluteFilePath());
-    expected <<= generateQStringSpec(fi.canonicalPath());
-    expected <<= generateQStringSpec(fi.canonicalFilePath());
-    expected <<= generateQStringSpec(fi.completeBaseName());
-    expected <<= generateQStringSpec(fi.completeSuffix());
-    expected <<= generateQStringSpec(fi.baseName());
-#ifdef Q_OS_MACX
-    expected <<= generateBoolSpec(fi.isBundle());
-    expected <<= generateQStringSpec(fi.bundleName());
+        "{name='absolutePath'," + specQString(fi.absolutePath()) + "},"
+        "{name='absoluteFilePath'," + specQString(fi.absoluteFilePath()) + "},"
+        "{name='canonicalPath'," + specQString(fi.canonicalPath()) + "},"
+        "{name='canonicalFilePath'," + specQString(fi.canonicalFilePath()) + "},"
+        "{name='completeBaseName'," + specQString(fi.completeBaseName()) + "},"
+        "{name='completeSuffix'," + specQString(fi.completeSuffix()) + "},"
+        "{name='baseName'," + specQString(fi.baseName()) + "},"
+#if 0
+        "{name='isBundle'," + specBool(fi.isBundle()) + "},"
+        "{name='bundleName'," + specQString(fi.bundleName()) + "},"
 #endif
-    expected <<= generateQStringSpec(fi.fileName());
-    expected <<= generateQStringSpec(fi.filePath());
-    expected <<= generateQStringSpec(fi.group());
-    expected <<= generateQStringSpec(fi.owner());
-    expected <<= generateQStringSpec(fi.path());
-    expected <<= generateLongSpec(fi.groupId());
-    expected <<= generateLongSpec(fi.ownerId());
-    expected <<= generateLongSpec(fi.permissions());
-    expected <<= generateBoolSpec(fi.caching());
-    expected <<= generateBoolSpec(fi.exists());
-    expected <<= generateBoolSpec(fi.isAbsolute());
-    expected <<= generateBoolSpec(fi.isDir());
-    expected <<= generateBoolSpec(fi.isExecutable());
-    expected <<= generateBoolSpec(fi.isFile());
-    expected <<= generateBoolSpec(fi.isHidden());
-    expected <<= generateBoolSpec(fi.isReadable());
-    expected <<= generateBoolSpec(fi.isRelative());
-    expected <<= generateBoolSpec(fi.isRoot());
-    expected <<= generateBoolSpec(fi.isSymLink());
-    expected <<= generateBoolSpec(fi.isWritable());
-    expected <<= utfToBase64(fi.created().toString());
-    expected <<= createExp(&fi, "QFileInfo", "created()");
-    expected <<= utfToBase64(fi.lastModified().toString());
-    expected <<= createExp(&fi, "QFileInfo", "lastModified()");
-    expected <<= utfToBase64(fi.lastRead().toString());
-    expected <<= createExp(&fi, "QFileInfo", "lastRead()");
-
-    testDumper(expected, &fi, NS"QFileInfo", true);
+        "{name='fileName'," + specQString(fi.fileName()) + "},"
+        "{name='filePath'," + specQString(fi.filePath()) + "},"
+        "{name='group'," + specQString(fi.group()) + "},"
+        "{name='owner'," + specQString(fi.owner()) + "},"
+        "{name='path'," + specQString(fi.path()) + "},"
+        "{name='groupid'," + specLong(fi.groupId()) + "},"
+        "{name='ownerid'," + specLong(fi.ownerId()) + "},"
+        "{name='permissions'," + specLong(fi.permissions()) + "},"
+        "{name='caching'," + specBool(fi.caching()) + "},"
+        "{name='exists'," + specBool(fi.exists()) + "},"
+        "{name='isAbsolute'," + specBool(fi.isAbsolute()) + "},"
+        "{name='isDir'," + specBool(fi.isDir()) + "},"
+        "{name='isExecutable'," + specBool(fi.isExecutable()) + "},"
+        "{name='isFile'," + specBool(fi.isFile()) + "},"
+        "{name='isHidden'," + specBool(fi.isHidden()) + "},"
+        "{name='isReadable'," + specBool(fi.isReadable()) + "},"
+        "{name='isRelative'," + specBool(fi.isRelative()) + "},"
+        "{name='isRoot'," + specBool(fi.isRoot()) + "},"
+        "{name='isSymLink'," + specBool(fi.isSymLink()) + "},"
+        "{name='isWritable'," + specBool(fi.isWritable()) + "},"
+        "{name='created',value='" + utfToHex(fi.created().toString()) + "',"
+            "valueencoded='2',type='"NS"QDateTime',numchild='1'},"
+        "{name='lastModified',value='" + utfToHex(fi.lastModified().toString()) +
+            "',valueencoded='2',type='"NS"QDateTime',numchild='1'},"
+        "{name='lastRead',value='" +  utfToHex(fi.lastRead().toString()) +
+            "',valueencoded='2',type='"NS"QDateTime',numchild='1'}]"
+        "local.fi");
 }
 
 
+#if 0
 void tst_Gdb::dump_QImageDataHelper(QImage &img)
 {
     const QByteArray ba(QByteArray::fromRawData((const char*) img.bits(), img.numBytes()));
@@ -1436,53 +1461,60 @@ void tst_Gdb::dump_QImageData()
 }
 #endif
 
-#if 0
-void tst_Gdb::dump_QLocaleHelper(QLocale &loc)
-{
-    QByteArray expected = QByteArray("value='%',type='$T',numchild='8',"
-            "children=[{name='country',%},"
-            "{name='language',%},"
-            "{name='measurementSystem',%},"
-            "{name='numberOptions',%},"
-            "{name='timeFormat_(short)',%},"
-            "{name='timeFormat_(long)',%},"
-            "{name='decimalPoint',%},"
-            "{name='exponential',%},"
-            "{name='percent',%},"
-            "{name='zeroDigit',%},"
-            "{name='groupSeparator',%},"
-            "{name='negativeSign',%}]")
-        << valToString(loc.name())
-        << createExp(&loc, "QLocale", "country()")
-        << createExp(&loc, "QLocale", "language()")
-        << createExp(&loc, "QLocale", "measurementSystem()")
-        << createExp(&loc, "QLocale", "numberOptions()")
-        << generateQStringSpec(loc.timeFormat(QLocale::ShortFormat))
-        << generateQStringSpec(loc.timeFormat())
-        << generateQCharSpec(loc.decimalPoint())
-        << generateQCharSpec(loc.exponential())
-        << generateQCharSpec(loc.percent())
-        << generateQCharSpec(loc.zeroDigit())
-        << generateQCharSpec(loc.groupSeparator())
-        << generateQCharSpec(loc.negativeSign());
-    testDumper(expected, &loc, NS"QLocale", true);
+void dump_QLocale()
+{
+    /* A */ QLocale english(QLocale::English);
+            QLocale german(QLocale::German);
+            QLocale chinese(QLocale::Chinese);
+            QLocale swahili(QLocale::Swahili);
+    /* C */ (void) (english.name() + german.name() + chinese.name() + swahili.name());
+}
+
+QByteArray dump_QLocaleHelper(const QLocale &loc)
+{
+    return "type='"NS"QLocale',valueencoded='7',value='" + utfToHex(loc.name()) +
+            "',numchild='8',children=["
+         "{name='country',"
+            + specQString(QLocale::countryToString(loc.country())) + "},"
+         "{name='language',"
+            + specQString(QLocale::languageToString(loc.language())) + "},"
+         "{name='measurementSystem',"
+            + QByteArray::number(loc.measurementSystem()) + "},"
+         "{name='numberOptions',"
+            + QByteArray::number(loc.numberOptions()) + "},"
+         "{name='timeFormat_(short)',"
+            + specQString(loc.timeFormat(QLocale::ShortFormat)) + "},"
+         "{name='timeFormat_(long)'," + specQString(loc.timeFormat()) + "},"
+         "{name='decimalPoint'," +  specQChar(loc.decimalPoint()) + "},"
+         "{name='exponential'," + specQChar(loc.exponential()) + "},"
+         "{name='percent'," + specQChar(loc.percent()) + "},"
+         "{name='zeroDigit'," + specQChar(loc.zeroDigit()) + "},"
+         "{name='groupSeparator'," + specQChar(loc.groupSeparator()) + "},"
+         "{name='negativeSign'," + specQChar(loc.negativeSign()) + "}]";
 }
 
 void tst_Gdb::dump_QLocale()
 {
     QLocale english(QLocale::English);
-    dump_QLocaleHelper(english);
-
     QLocale german(QLocale::German);
-    dump_QLocaleHelper(german);
-
     QLocale chinese(QLocale::Chinese);
-    dump_QLocaleHelper(chinese);
-
     QLocale swahili(QLocale::Swahili);
-    dump_QLocaleHelper(swahili);
+    prepare("dump_QLocale");
+    if (checkUninitialized)
+        run("A","{iname='local.english',name='english',"
+            "type='"NS"QLocale',value='<invalid>',"
+            "numchild='0'}");
+    next(3);
+    run("D","{iname='local.english',name='english',"
+            + dump_QLocaleHelper(english) + "},"
+        "{iname='local.german',name='german',"
+            + dump_QLocaleHelper(german) + "},"
+        "{iname='local.chinese',name='chinese',"
+            + dump_QLocaleHelper(chinese) + "},"
+        "{iname='local.swahili',name='swahili',"
+            + dump_QLocaleHelper(swahili) + "}",
+        "local.english,local.german,local.chinese,local.swahili");
 }
-#endif
 
 ///////////////////////////// QHash<int, int> //////////////////////////////
 
@@ -1513,9 +1545,7 @@ void tst_Gdb::dump_QHash_int_int()
         run("A","{iname='local.h',name='h',"
             "type='"NS"QHash<int, int>',value='<invalid>',"
             "numchild='0'}");
-    next();
-    next();
-    next();
+    next(3);
     run("D","{iname='local.h',name='h',"
             "type='"NS"QHash<int, int>',value='<2 items>',numchild='2',"
             "childtype='int',childnumchild='0',children=["
@@ -1574,8 +1604,7 @@ void dump_QLinkedList_int()
     /* A */ QLinkedList<int> h;
     /* B */ h.append(42);
     /* C */ h.append(44);
-    /* D */ (void) 0;
-}
+    /* D */ (void) 0; }
 
 void tst_Gdb::dump_QLinkedList_int()
 {
@@ -1917,8 +1946,7 @@ void dump_QObject1()
     /* B */ QObject child(&parent);
     /* C */ parent.setObjectName("A Parent");
     /* D */ child.setObjectName("A Child");
-    /* H */ (void) 0;
-}
+    /* H */ (void) 0; }
 
 void tst_Gdb::dump_QObject()
 {
@@ -2024,7 +2052,7 @@ void tst_Gdb::dump_QObjectChildListHelper(QObject &o)
     for (int i = 0; i < size; ++i) {
         const QObject *child = children.at(i);
         expected.append("{addr='").append(ptrToBa(child)).append("',value='").
-            append(utfToBase64(child->objectName())).
+            append(utfToHex(child->objectName())).
             append("',valueencoded='2',type='"NS"QObject',displayedtype='").
             append(child->metaObject()->className()).append("',numchild='1'}");
         if (i < size - 1)
@@ -2155,7 +2183,7 @@ void tst_Gdb::dump_QObjectSignalHelper(QObject &o, int sigNum)
             expected.append("value='0x0',type='"NS"QObject *',numchild='0'");
         else
             expected.append("addr='").append(ptrToBa(conn->receiver)).append("',value='").
-                append(utfToBase64(conn->receiver->objectName())).append("',valueencoded='2',").
+                append(utfToHex(conn->receiver->objectName())).append("',valueencoded='2',").
                 append("type='"NS"QObject',displayedtype='").
                 append(conn->receiver->metaObject()->className()).append("',numchild='1'");
         expected.append("},{name='").append(iStr).append(" slot',type='',value='");
@@ -3223,6 +3251,46 @@ void tst_Gdb::dump_QWeakPointer_2() {}
 #endif
 
 
+///////////////////////////// QWidget //////////////////////////////
+
+void dump_QWidget()
+{
+    #ifdef QT_GUI_LIB
+    /* A */ QWidget w;
+    /* B */ (void) w.size();
+    #endif
+}
+
+void tst_Gdb::dump_QWidget()
+{
+    #ifdef QT_GUI_LIB
+    prepare("dump_QWidget");
+    if (checkUninitialized)
+        run("A","{iname='local.w',name='w',"
+                "type='"NS"QWidget',value='<invalid>',numchild='0'}");
+    next();
+    run("B","{iname='local.w',name='w',numchild='4',children=["
+      "{name='"NS"QObject',type='"NS"QObject',"
+        "valueencoded='7',value='',numchild='4',children=["
+          "{name='parent',type='"NS"QObject *',value='0x0',numchild='0'},"
+          "{name='children',type='"NS"QObject::QObjectList',"
+            "value='<0 items>',numchild='0'},"
+          "{name='properties',value='<1 items>',type='',numchild='1'},"
+          "{name='connections',value='<0 items>',type='',numchild='0'},"
+          "{name='signals',value='<2 items>',type='',"
+            "numchild='2',childnumchild='0'},"
+          "{name='slots',value='<2 items>',type='',"
+            "numchild='2',childnumchild='0'}"
+        "]},"
+      "{name='"NS"QPaintDevice',type='"NS"QPaintDevice',"
+        "value='{...}',numchild='2'},"
+      "{name='data',type='"NS"QWidgetData *',"
+        "value='-',numchild='1'}]",
+      "local.w,local.w."NS"QObject");
+    #endif
+}
+
+
 ///////////////////////////// std::deque<int> //////////////////////////////
 
 void dump_std_deque()
@@ -3581,6 +3649,9 @@ int main(int argc, char *argv[])
         dump_QAbstractItemAndModelIndex();
         dump_QByteArray();
         dump_QChar();
+        dump_QDir();
+        dump_QFile();
+        dump_QFileInfo();
         dump_QHash_int_int();
         dump_QHash_QString_QString();
         dump_QImage();
@@ -3592,6 +3663,7 @@ int main(int argc, char *argv[])
         dump_QList_Int3();
         dump_QList_QString();
         dump_QList_QString3();
+        dump_QLocale();
         dump_QMap_int_int();
         dump_QMap_QString_QString();
         dump_QPixmap();
@@ -3612,6 +3684,7 @@ int main(int argc, char *argv[])
         dump_QWeakPointer_12();
         dump_QWeakPointer_13();
         dump_QWeakPointer_2();
+        dump_QWidget();
     }
 
     try {