From db3217af367deb598028d0b436a4b9c4fbec1ee0 Mon Sep 17 00:00:00 2001 From: hjk Date: Sat, 19 Mar 2016 23:56:50 +0100 Subject: Debugger: Make QVariant dumper more robust Change-Id: Ic9ce15eaf88f8a5267c9e8d3f9d049d9b2035eb1 Reviewed-by: Christian Stenger --- share/qtcreator/debugger/qttypes.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 65fac46b43..b2b0ffd4eb 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -2152,15 +2152,23 @@ def qdump__QVariant(d, value): data = value["d"]["data"] ns = d.qtNamespace() inner = ns + innert - if d.isLldb: - # Looking up typedefs is problematic. + innerType = d.lookupType(inner) + + if innerType is None: + # Looking up typedefs is problematic with LLDB, and can also + # happen with GDB e.g. in the QVariant2 dumper test on x86 + # unless further use of the empty QVariantHash is added. if innert == "QVariantMap": inner = "%sQMap<%sQString, %sQVariant>" % (ns, ns, ns) elif innert == "QVariantHash": inner = "%sQHash<%sQString, %sQVariant>" % (ns, ns, ns) elif innert == "QVariantList": inner = "%sQList<%sQVariant>" % (ns, ns) - innerType = d.lookupType(inner) + innerType = d.lookupType(inner) + + if innerType is None: + self.putSpecialValue("notaccessible") + return innert if toInteger(value["d"]["is_shared"]): val = data["ptr"].cast(innerType.pointer().pointer()).dereference().dereference() -- cgit v1.2.1