diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 2012cef8daa496d8f416b010614bc45c13af3c53..bfb4604b6ca6537694ee09e1d3cace03237525fc 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -838,7 +838,7 @@ class FrameCommand(gdb.Command): d.typeformats = typeformats d.formats = formats d.useFancy = useFancy - d.passExceptions = "passexceptions" in options + d.passExceptions = "pe" in options d.autoDerefPointers = "autoderef" in options d.ns = qtNamespace() d.expandedINames = expandedINames diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py index 41ae51b588875cec8a1b6608d971f26b73a309e7..112a0176f0d72276ea0c3627ffacea2457a0ab9f 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.py +++ b/share/qtcreator/gdbmacros/gdbmacros.py @@ -1453,9 +1453,9 @@ def qdump__QUrl(d, item): def qdumpHelper__QVariant(d, value): - #warn("VARIANT TYPE: %s : " % variantType) data = value["d"]["data"] variantType = int(value["d"]["type"]) + #warn("VARIANT TYPE: %s : " % variantType) val = None inner = "" innert = "" @@ -1597,15 +1597,18 @@ def qdumpHelper__QVariant(d, value): def qdump__QVariant(d, item): val, inner, innert = qdumpHelper__QVariant(d, item.value) + #warn("VARIANT DATA: '%s' '%s' '%s': " % (val, inner, innert)) - if len(inner): - # Build-in types. - #d.putValue("(%s)" % innert) - d.putType("%sQVariant (%s)" % (d.ns, innert)) - d.putNumChild(1) - if d.isExpanded(item): - with Children(d): - d.putItem(Item(val, item.iname, "data", "data")) + if len(inner): + innerType = gdb.lookup_type(inner) + # FIXME: Why "shared"? + if innerType.sizeof > item.value["d"]["data"].type.sizeof: + v = item.value["d"]["data"]["shared"]["ptr"] \ + .cast(innerType.pointer()).dereference() + else: + v = item.value["d"]["data"].cast(innerType) + d.putItemHelper(Item(v, item.iname)) + d.putType("%sQVariant (%s)" % (d.ns, innert), d.currentTypePriority + 1) else: # User types. d_member = item.value["d"]