diff options
author | hjk <hjk@theqtcompany.com> | 2016-03-19 23:56:50 +0100 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2016-03-21 15:03:03 +0000 |
commit | db3217af367deb598028d0b436a4b9c4fbec1ee0 (patch) | |
tree | 0402fa32083d9f2aa7236b647acdb253e5bb1145 | |
parent | ddde4bdd273749fc244613c04d88856667e0920a (diff) | |
download | qt-creator-db3217af367deb598028d0b436a4b9c4fbec1ee0.tar.gz |
Debugger: Make QVariant dumper more robust
Change-Id: Ic9ce15eaf88f8a5267c9e8d3f9d049d9b2035eb1
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
-rw-r--r-- | share/qtcreator/debugger/qttypes.py | 14 |
1 files 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() |