From e8eea80c3ffe987d2467fe5009c02802c92c4052 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 17 Aug 2010 14:14:22 +0200 Subject: [PATCH] debugger: next attempt at robustly recognizing QObjects --- share/qtcreator/gdbmacros/dumper.py | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index 0334fb4b338..39a80c5f6e8 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -1351,20 +1351,6 @@ class Dumper: type = value.type typedefStrippedType = stripTypedefs(type) - nsStrippedType = self.stripNamespaceFromType(typedefStrippedType)\ - .replace("::", "__") - - # Is this derived from QObject? - hasMetaObject = False - try: - if value.type.code != gdb.TYPE_CODE_PTR: - mo = item.value['staticMetaObject'] - hasMetaObject = True - except: - pass - - #warn(" STRIPPED: %s" % nsStrippedType) - #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers)) if isSimpleType(typedefStrippedType): #warn("IS SIMPLE: %s " % type) @@ -1372,8 +1358,22 @@ class Dumper: self.putType(item.value.type) self.putValue(value) self.putNumChild(0) + return + + # Is this derived from QObject? + hasMetaObject = False + for field in typedefStrippedType.strip_typedefs().fields(): + if field.name == "staticMetaObject": + hasMetaObject = True + break + + nsStrippedType = self.stripNamespaceFromType(typedefStrippedType)\ + .replace("::", "__") + + #warn(" STRIPPED: %s" % nsStrippedType) + #warn(" DUMPERS: %s" % (nsStrippedType in qqDumpers)) - elif self.useFancy \ + if self.useFancy \ and ((format is None) or (format >= 1)) \ and ((nsStrippedType in qqDumpers) or hasMetaObject): #warn("IS DUMPABLE: %s " % type) -- GitLab