From 0b57c8ded223f1fb994162c7b8bfb78ae0e37ae5 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 8 Jul 2013 13:00:52 +0200 Subject: [PATCH] Debugger: Fix LLDB display of std::array with "complex" content Change-Id: I43dd9b8afe76f204fe2509f1f2f81f74c48a16ab Reviewed-by: hjk --- share/qtcreator/dumper/lbridge.py | 2 +- share/qtcreator/dumper/qttypes.py | 6 +++++- tests/auto/debugger/tst_dumpers.cpp | 28 ++++++++++++++++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/dumper/lbridge.py b/share/qtcreator/dumper/lbridge.py index 283ed7c5d1..1dcb490fde 100644 --- a/share/qtcreator/dumper/lbridge.py +++ b/share/qtcreator/dumper/lbridge.py @@ -737,7 +737,7 @@ class Dumper: def putArrayData(self, type, base, n, childNumChild = None, maxNumChild = 10000): if not self.tryPutArrayContents(type, base, n): - base = base.cast(type.pointer()) + base = self.createPointerValue(base, type) with Children(self, n, type, childNumChild, maxNumChild, base, type.GetByteSize()): for i in self.childRange(): diff --git a/share/qtcreator/dumper/qttypes.py b/share/qtcreator/dumper/qttypes.py index 10aa48d616..5e04e4f727 100644 --- a/share/qtcreator/dumper/qttypes.py +++ b/share/qtcreator/dumper/qttypes.py @@ -2148,7 +2148,11 @@ def qdump__std__array(d, value): d.putNumChild(size) if d.isExpanded(): innerType = d.templateArgument(value.type, 0) - d.putArrayData(innerType, value.address, size) + d.putArrayData(innerType, d.addressOf(value), size) + + +def qdump__std____1__array(d, value): + qdump__std__array(d, value) def qdump__std__complex(d, value): diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 65dfe3d56e..48f7230206 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -330,8 +330,30 @@ struct Profile struct Cxx11Profile : public Profile { - //Cxx11Profile() : Profile("CONFIG += c++11") {} - Cxx11Profile() : Profile("QMAKE_CXXFLAGS += -std=c++0x") {} + Cxx11Profile() + : Profile("greaterThan(QT_MAJOR_VERSION,4): CONFIG += c++11\n" + "else: QMAKE_CXXFLAGS += -std=c++0x\n") + {} +}; + +struct MacLibStdCppProfile : public Profile +{ + MacLibStdCppProfile() + : Profile("macx {\n" + "QMAKE_CXXFLAGS += -stdlib=libc++\n" + "LIBS += -stdlib=libc++\n" + "QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7\n" + "QMAKE_IOS_DEPLOYMENT_TARGET = 10.7\n" + "QMAKE_CFLAGS -= -mmacosx-version-min=10.6\n" + "QMAKE_CFLAGS += -mmacosx-version-min=10.7\n" + "QMAKE_CXXFLAGS -= -mmacosx-version-min=10.6\n" + "QMAKE_CXXFLAGS += -mmacosx-version-min=10.7\n" + "QMAKE_OBJECTIVE_CFLAGS -= -mmacosx-version-min=10.6\n" + "QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.7\n" + "QMAKE_LFLAGS -= -mmacosx-version-min=10.6\n" + "QMAKE_LFLAGS += -mmacosx-version-min=10.7\n" + "}") + {} }; struct GdbOnly {}; @@ -959,6 +981,7 @@ void tst_Dumpers::dumper() qDebug() << "CONTENTS : " << contents; qDebug() << "Qt VERSION : " << qPrintable(QString::number(context.qtVersion, 16)); + qDebug() << "BUILD DIR : " << qPrintable(t->buildPath); } QVERIFY(ok); t->buildTemp.setAutoRemove(m_keepTemp); @@ -2317,6 +2340,7 @@ void tst_Dumpers::dumper_data() "unused(&a, &b);\n") % CoreProfile() % Cxx11Profile() + % MacLibStdCppProfile() % Check("a", "<4 items>", "std::array") % Check("b", "<4 items>", "std::array<@QString, 4u>"); -- GitLab