diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 0a375b55d972e588c56a8780cd6613e267578f62..73cbf78af8ddca1b9ab891c52a6f40d99233a64e 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -1357,6 +1357,13 @@ class Dumper: nsStrippedType = self.stripNamespaceFromType(typedefStrippedType)\ .replace("::", "__") + # Is this derived from QObject? + try: + item.value['staticMetaObject'] + hasMetaObject = True + except: + hasMetaObject = False + #warn(" STRIPPED: %s" % nsStrippedType) #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers)) @@ -1369,11 +1376,14 @@ class Dumper: elif self.useFancy \ and ((format is None) or (format >= 1)) \ - and (nsStrippedType in qqDumpers): + and ((nsStrippedType in qqDumpers) or hasMetaObject): #warn("IS DUMPABLE: %s " % type) #self.putAddress(value.address) self.putType(item.value.type) - qqDumpers[nsStrippedType](self, item) + if hasMetaObject: + qdump__QObject(self, item) + else: + qqDumpers[nsStrippedType](self, item) #warn(" RESULT: %s " % self.output) elif typedefStrippedType.code == gdb.TYPE_CODE_ENUM: diff --git a/share/qtcreator/gdbmacros/gdbmacros.py b/share/qtcreator/gdbmacros/gdbmacros.py index 14596df593a848e078e7e684d2a3198b7890ea5c..8fa5079ceac014d1cf49bb3abc97f400ed7d1906 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.py +++ b/share/qtcreator/gdbmacros/gdbmacros.py @@ -588,9 +588,6 @@ def extractCString(table, offset): return result -def qdump__QWidget(d, item): - qdump__QObject(d, item) - def qdump__QObject(d, item): #warn("OBJECT: %s " % item.value) staticMetaObject = item.value["staticMetaObject"] @@ -628,6 +625,7 @@ def qdump__QObject(d, item): d.putNumChild(4) if d.isExpanded(item): with Children(d): + d.putFields(item) # Parent and children. d.putItem(Item(d_ptr["parent"], item.iname, "parent", "parent")) d.putItem(Item(d_ptr["children"], item.iname, "children", "children")) @@ -651,9 +649,8 @@ def qdump__QObject(d, item): namesArray = names["d"]["array"] dynamicPropertyCount = namesEnd - namesBegin - #staticPropertyCount = metaData[6] - # FIXME: Replace with plain memory accesses. - staticPropertyCount = call(mo, "propertyCount()") + #staticPropertyCount = call(mo, "propertyCount()") + staticPropertyCount = metaData[6] #warn("PROPERTY COUNT: %s" % staticPropertyCount) propertyCount = staticPropertyCount + dynamicPropertyCount diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index 1b43bb9eba4e8f2e598b3cb242a9ffc7fb73528d..bc99c1d5f6191f9676184e5cf2b0a1a2ac062290 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -761,13 +761,18 @@ public: int i = 0; } - Q_PROPERTY(QString myProp READ myProp WRITE setMyProp) - QString myProp() const { return m_myProp; } - Q_SLOT void setMyProp(const QString &mt) { m_myProp = mt; } + Q_PROPERTY(QString myProp1 READ myProp1 WRITE setMyProp1) + QString myProp1() const { return m_myProp1; } + Q_SLOT void setMyProp1(const QString &mt) { m_myProp1 = mt; } + + Q_PROPERTY(QString myProp2 READ myProp2 WRITE setMyProp2) + QString myProp2() const { return m_myProp2; } + Q_SLOT void setMyProp2(const QString &mt) { m_myProp2 = mt; } public: Ui *m_ui; - QString m_myProp; + QString m_myProp1; + QString m_myProp2; }; } // namespace Bar @@ -778,8 +783,10 @@ void testQObject(int &argc, char *argv[]) QApplication app(argc, argv); #if 1 Names::Bar::TestObject test; - test.setMyProp("HELLO"); - QString s = test.myProp(); + test.setMyProp1("HELLO"); + test.setMyProp2("WORLD"); + QString s = test.myProp1(); + s += test.myProp2(); int i = 1; #endif