diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py
index 9ccc1c54b003c512a82d424d5f44dad5e8164dd5..41ae51b588875cec8a1b6608d971f26b73a309e7 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.py
+++ b/share/qtcreator/gdbmacros/gdbmacros.py
@@ -397,9 +397,9 @@ def qdump__QList(d, item):
         # in the frontend.
         # So as first approximation only do the 'isLarge' check:
         isInternal = innerSize <= d_ptr.type.sizeof and d.isMovableType(innerType)
-        #warn("INTERNAL: %d" % int(isInternal))
-
-        p = gdb.Value(array).cast(innerType.pointer()) + begin
+        dummyType = gdb.lookup_type("void").pointer().pointer()
+        innerTypePointer = innerType.pointer()
+        p = gdb.Value(array).cast(dummyType) + begin
         if innerTypeIsPointer:
             inner = innerType.target()
         else:
@@ -408,10 +408,11 @@ def qdump__QList(d, item):
         with Children(d, [size, 2000], inner):
             for i in d.childRange():
                 if isInternal:
-                    d.putItem(Item(p.dereference(), item.iname, i))
+                    pp = p.cast(innerTypePointer).dereference();
+                    d.putItem(Item(pp, item.iname, i))
                 else:
-                    pp = p.cast(innerType.pointer().pointer()).dereference()
-                    d.putItem(Item(pp.dereference(), item.iname, i))
+                    pp = p.cast(innerTypePointer.pointer()).dereference()
+                    d.putItem(Item(pp, item.iname, i))
                 p += 1
 
 
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index 778e8b61f6ead6ee34dd8319c3ed80afa9037d88..464e18b7365a223f8613764039f42c7ad119f719 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -1296,6 +1296,14 @@ void testQVariant2()
 
 void testQVariant3()
 {
+    QVariantList vl;
+    vl.append(QVariant(1));
+    vl.append(QVariant(2));
+    vl.append(QVariant("Some String"));
+    vl.append(QVariant(21));
+    vl.append(QVariant(22));
+    vl.append(QVariant("2Some String"));
+
     QList<int> list;
     list << 1 << 2 << 3;
     QVariant variant = qVariantFromValue(list);