diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp
index b82d54e75e1620a5743e3c2684d27ab5aaf24629..83486e899e9f1ded9f5c1ceff68a30708d58cb0e 100644
--- a/src/plugins/debugger/watchutils.cpp
+++ b/src/plugins/debugger/watchutils.cpp
@@ -1338,12 +1338,13 @@ void QtDumperHelper::evaluationParameters(const WatchData &data,
     case QAbstractItemType:
         inner = data.addr.mid(1);
         break;
-    case QVectorType:
-        extraArgs[1] = QLatin1String("(char*)&((");
-        extraArgs[1] += data.exp;
-        extraArgs[1] += QLatin1String(").d->array)-(char*)");
-        extraArgs[1] += data.exp;
-        extraArgs[1] +=  QLatin1String(".d");
+    case QVectorType: 
+        if (m_qtVersion >= 0x040600)
+            extraArgs[1] = QString("(char*)&((%1).p->array)-(char*)((%2).p)")
+                .arg(data.exp).arg(data.exp);
+        else
+            extraArgs[1] = QString("(char*)&((%1).d->array)-(char*)((%2).d)")
+                .arg(data.exp).arg(data.exp);
         break;
     case QObjectSlotType:
     case QObjectSignalType: {
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index c230f2733fb11edf781a164371e20ea975539858..ff3feca27a2b50c66d594e1e3be1d7ce55357e51 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -616,6 +616,10 @@ void testStdDeque()
 
 void testStdList()
 {
+    std::list<int> big;
+    for (int i = 0; i < 10000; ++i)
+        big.push_back(i);
+
     std::list<int *> plist1;
     plist1.push_back(new int(1));
     plist1.push_back(0);
@@ -977,7 +981,6 @@ void testQVector()
 
     QVector<Foo> flist;
     flist.append(1);
-
     flist.append(2);
     flist.append(3);
     flist.append(4);