diff --git a/share/qtcreator/gdbmacros/test/main.cpp b/share/qtcreator/gdbmacros/test/main.cpp
index 2696b32f12a031d34f824bf16d2f3f33998e93d2..b6be579ab383600ca0a736321568c5e75008035d 100644
--- a/share/qtcreator/gdbmacros/test/main.cpp
+++ b/share/qtcreator/gdbmacros/test/main.cpp
@@ -33,6 +33,7 @@
 #include <QtCore/QSharedPointer>
 #include <QtCore/QTimer>
 #include <QtCore/QMap>
+#include <QtCore/QSet>
 #include <QtCore/QVariant>
 #include <QtGui/QAction>
 
@@ -159,6 +160,16 @@ static int dumpQIntVector()
     return 0;
 }
 
+static int dumpQQStringVector()
+{
+    QVector<QString> test = QVector<QString>() << "42s" << "43s";
+    prepareInBuffer("QVector", "local.qstringvector", "local.qstringvector", "QString");
+    qDumpObjectData440(2, 42, testAddress(&test), 1, sizeof(QString), 0, 0, 0);
+    fputs(qDumpOutBuffer, stdout);
+    fputc('\n', stdout);
+    return 0;
+}
+
 static int dumpQMapIntInt()
 {
     QMap<int,int> test;
@@ -187,6 +198,19 @@ static int dumpQMapIntString()
     return 0;
 }
 
+static int dumpQSetInt()
+{
+    QSet<int> test;
+    test.insert(42);
+    test.insert(43);
+    prepareInBuffer("QSet", "local.qsetint", "local.qsetint", "int");
+    qDumpObjectData440(2, 42, testAddress(&test), 1, sizeof(int), 0, 0, 0);
+    fputs(qDumpOutBuffer, stdout);
+    fputc('\n', stdout);
+    return 0;
+}
+
+
 static int dumpQMapQStringString()
 {
     QMap<QString,QString> test;
@@ -445,9 +469,11 @@ static TypeDumpFunctionMap registerTypes()
     rc.insert("QLinkedList<int>", dumpQIntLinkedList);
     rc.insert("QList<std::string>", dumpStdStringQList);
     rc.insert("QVector<int>", dumpQIntVector);
+    rc.insert("QVector<QString>", dumpQQStringVector);
     rc.insert("QMap<int,QString>", dumpQMapIntString);
     rc.insert("QMap<QString,QString>", dumpQMapQStringString);
     rc.insert("QMap<int,int>", dumpQMapIntInt);
+    rc.insert("QSet<int>", dumpQSetInt);
     rc.insert("string", dumpStdString);
     rc.insert("wstring", dumpStdWString);
     rc.insert("list<int>", dumpStdIntList);
diff --git a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp
index ee941972cb00119f854eabd1a775da74b23e5272..f58f1f745272a9912e89d72b23cf473b4e2e997f 100644
--- a/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp
+++ b/src/plugins/debugger/cdb/cdbsymbolgroupcontext.cpp
@@ -595,9 +595,9 @@ bool CdbSymbolGroupContext::debugValueToInteger(const DEBUG_VALUE &dv, qint64 *v
  * To add further types, have a look at the toString() output of the
  * symbol group. */
 
-static QString msgStructuralError(const QString &type, int code)
+static QString msgStructuralError(const QString &name, const QString &type, int code)
 {
-    return QString::fromLatin1("Warning: Internal dumper for '%1' failed with %2.").arg(type).arg(code);
+    return QString::fromLatin1("Warning: Internal dumper for '%1' (%2) failed with %3.").arg(name, type).arg(code);
 }
 
 static inline bool isStdStringOrPointer(const QString &type)
@@ -631,7 +631,7 @@ CdbSymbolGroupContext::DumperResult
                 rc = DumperError;
                 break;
             default:
-                qWarning("%s\n", qPrintable(msgStructuralError(wd->type, drc)));
+                qWarning("%s\n", qPrintable(msgStructuralError(wd->iname, wd->type, drc)));
                 rc = DumperNotHandled;
                 break;
             }
@@ -647,7 +647,7 @@ CdbSymbolGroupContext::DumperResult
                 rc = DumperError;
                 break;
             default:
-                qWarning("%s\n", qPrintable(msgStructuralError(wd->type, drc)));
+                qWarning("%s\n", qPrintable(msgStructuralError(wd->iname, wd->type, drc)));
                 rc = DumperNotHandled;
                 break;
             }