diff --git a/tests/auto/debugger/tst_gdb.cpp b/tests/auto/debugger/tst_gdb.cpp
index e33a67aea6c4012f1c4de13ba150c1e85f952564..433b11f819227450f6b2322add7a69f24f8307fb 100644
--- a/tests/auto/debugger/tst_gdb.cpp
+++ b/tests/auto/debugger/tst_gdb.cpp
@@ -1,4 +1,6 @@
 
+//#define DO_DEBUG 1
+
 #include <QtCore/QThread>
 #include <QtCore/QMutex>
 #include <QtCore/QWaitCondition>
@@ -29,7 +31,6 @@
 #   define NSY ""
 #endif
 
-//#define DO_DEBUG 1
 #undef DEBUG
 #if DO_DEBUG
 #   define DEBUG(s) qDebug() << s
@@ -127,13 +128,14 @@ public:
     void cleanupTestCase();
     void prepare(const QByteArray &function);
     void run(const QByteArray &label, const QByteArray &expected,
-        const QByteArray &expanded = QByteArray());
+        const QByteArray &expanded = QByteArray(), bool fancy = true);
     void next(int n = 1);
 
 signals:
     void writeToGdb(const QByteArray &ba);
 
 private slots:
+    void dumpMisc();
     void dumpQList_int();
     void dumpQString();
     void dumpQStringList();
@@ -2243,11 +2245,11 @@ void tst_Gdb::prepare(const QByteArray &function)
     writeToGdb("call " + function + "()");
 }
 
-void tst_Gdb::run(const QByteArray &label,
-    const QByteArray &expected0, const QByteArray &expanded)
+void tst_Gdb::run(const QByteArray &label, const QByteArray &expected0,
+    const QByteArray &expanded, bool fancy)
 {
-    //qDebug() << "\nABOUT TO RUN TEST: " << function << m_thread.m_proc;
-    writeToGdb("bb 1 " + expanded);
+    //qDebug() << "\nABOUT TO RUN TEST: " << expanded;
+    writeToGdb("bb " + QByteArray::number(int(fancy)) + " " + expanded);
     m_mutex.lock();
     m_waitCondition.wait(&m_mutex);
     QByteArray ba = m_thread.m_output;
@@ -2269,17 +2271,16 @@ void tst_Gdb::run(const QByteArray &label,
     bool ok = l1.size() == l2.size();
     if (ok) {
         for (int i = 0 ; i < l1.size(); ++i) {
-            if (l1.at(i) != l2.at(i))
-                if (!l1.at(i).startsWith("addr") || !l2.at(i).startsWith("addr"))
-                    ok = false;
+            // Use "-" as joker.
+            if (l1.at(i) != l2.at(i) && !l2.at(i).endsWith("'-'"))
+                ok = false;
         }
     }
     
     if (!ok) {
         int i = 0;
         for ( ; i < l1.size() && i < l2.size(); ++i) {
-            if (l1.at(i) == l2.at(i)
-                    || (l1.at(i).startsWith("addr") && l2.at(i).startsWith("addr"))) {
+            if (l1.at(i) == l2.at(i) || l2.at(i).endsWith("'-'")) {
                 qWarning() << "== " << l1.at(i);
             } else {
                 //qWarning() << "!= " << l1.at(i).right(30) << l2.at(i).right(30);
@@ -2397,6 +2398,24 @@ void tst_Gdb::dumpQList_QString()
 }
 */
 
+void dumpMisc()
+{
+    /* A */ int *s = new int(1);
+    /* B */ *s += 1;
+    /* D */ (void) s;
+}
+
+void tst_Gdb::dumpMisc()
+{
+    prepare("dumpMisc");
+    next();
+    run("B","{iname='local.s',addr='-',name='s',type='int *',"
+            "value='-',numchild='1'}", "", 0);
+    run("B","{iname='local.s',addr='-',name='s',type='int *',"
+            "value='-',numchild='1',children=[{iname='local.s.*',"
+            "name='*s',type='int',value='1',numchild='0'}]}", "local.s", 0);
+}
+
 void dumpQStringTest()
 {
     /* A */ QString s;
@@ -2412,7 +2431,13 @@ void tst_Gdb::dumpQString()
             "value='<not in scope>',numchild='0'}");
     next();
     run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
-            "valueencoded='7',value='',numchild='0'}");
+            "valueencoded='7',value='',numchild='0'}", "local.s");
+    // Plain C:
+    run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+            "value='{...}',numchild='5'}", "", 0);
+    run("B","{iname='local.s',addr='-',name='s',type='"NS"QString',"
+            "value='{...}',numchild='5',children=[]}", "local.s", 0);
+return;
     next();
     run("C","{iname='local.s',addr='-',name='s',type='"NS"QString',"
             "valueencoded='7',value='680061006c006c006f00',numchild='0'}");
@@ -2432,8 +2457,8 @@ void dumpQStringListTest()
 void tst_Gdb::dumpQStringList()
 {
     prepare("dumpQStringListTest");
-    run("A","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
-            "value='<not in scope>',numchild='0'}");
+    //run("A","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
+    //        "value='<not in scope>',numchild='0'}");
     next();
     run("B","{iname='local.s',addr='-',name='s',type='"NS"QStringList',"
             "value='<0 items>',numchild='0'}");