From 3a2c3483447a2efbb11031dd9f9100d22d983345 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 23 Aug 2011 09:22:15 +0200 Subject: [PATCH] debugger: display vtables Change-Id: I5e3f6b4d92712f0ff9957bb902fd2d999b1c8249 Reviewed-on: http://codereview.qt.nokia.com/3401 Reviewed-by: hjk --- share/qtcreator/dumper/dumper.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py index 46d336097c2..c9ca829912e 100644 --- a/share/qtcreator/dumper/dumper.py +++ b/share/qtcreator/dumper/dumper.py @@ -1033,6 +1033,7 @@ class Dumper: qqQObjectCache[name] = True return True fields = type.strip_typedefs().fields() + #fields = extractFields(type) if len(fields) == 0: qqQObjectCache[name] = False return False @@ -1438,7 +1439,6 @@ class Dumper: with SubItem(self, "*"): self.put('name="*",') self.putItem(value.dereference()) - self.putAddress(value) self.putPointerValue(value.address) return @@ -1453,7 +1453,7 @@ class Dumper: return if type.code != StructCode: - warning("WRONG ASSUMPTION HERE: %s " % type.code) + warn("WRONG ASSUMPTION HERE: %s " % type.code) check(False) # Is this derived from QObject? @@ -1548,6 +1548,21 @@ class Dumper: # Ignore vtable pointers for virtual inheritance. if field.name.startswith("_vptr."): + with SubItem(self, "[vptr]"): + # int (**)(void) + n = 20 + self.putType(" ") + self.putValue(value[field.name]) + self.putNumChild(n) + if self.isExpanded(): + with Children(self): + p = value[field.name] + for i in xrange(n): + if long(p.dereference()) != 0: + with SubItem(self, i): + self.putItem(p.dereference()) + self.putType(" ") + p = p + 1 continue #warn("FIELD NAME: %s" % field.name)