diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 8cb71d2b9c60192d532ac7096682239b386d3f55..0f2295c20a1ca6062c0a608f334acc8d801eaeef 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -843,7 +843,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 dd066cdb32b48f3f865699c6ab07915d6ad5ca31..4c4184bbd107db173ef7c40522a2c84d1a9c82b1 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.py +++ b/share/qtcreator/gdbmacros/gdbmacros.py @@ -1461,9 +1461,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 = "" @@ -1605,15 +1605,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"] diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index 54b9eacbcec734be0d6117ec81b7b603bff3cab9..b8cd6ce4637ba859094ff73e0b22db52dcca4b05 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -1259,15 +1259,16 @@ void testQThread() thread2.wait(); } -QVariant testQVariant1() +void testQVariant1() { QVariant v; v = 1; v = 1.0; v = "string"; v = QRect(100, 200, 300, 400); + v = QRectF(100, 200, 300, 400); v = 1; - return v; + //return v; } QVariant testQVariant2() @@ -1313,7 +1314,7 @@ QVariant testQVariant2() var.setValue(my); var.setValue(my); #endif - return value; + return QVariant("sss"); } QVariant testQVariant3() @@ -1331,7 +1332,7 @@ QVariant testQVariant3() QVariant variant = qVariantFromValue(list); list.clear(); list = qVariantValue<QList<int> >(variant); - return variant; + return QVariant("xxx"); } QVector<int> testQVector()