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);