diff options
author | hjk <hjk@qt.io> | 2017-04-24 16:42:30 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-04-25 10:24:50 +0000 |
commit | 5784a96596a95aaa43173f58b71c0d3c6a0138e6 (patch) | |
tree | 23270da9d6133dcbf5d2b4962600433f5d6fbf53 /share | |
parent | b952d0420e1fe2b128934d59d9f47f14d337cbf6 (diff) | |
download | qt-creator-5784a96596a95aaa43173f58b71c0d3c6a0138e6.tar.gz |
Debugger: Extract printing of dereferenced pointers into method
It's used twice, always for 'this', and whenever asked for by the
user's 'Dereference Pointers Automatically' choice, but needs to
be done at different times.
Change-Id: I4dc7340d0a4cb3eb0c7ff17d59e39be0e3870aa0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'share')
-rw-r--r-- | share/qtcreator/debugger/dumper.py | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index d94ffbe640..c03f07d9e9 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -1304,6 +1304,17 @@ class DumperBase: self.putFormattedPointerX(value) self.ping('formattedPointer') + def putDerefedPointer(self, value): + derefValue = value.dereference() + innerType = value.type.target() #.unqualified() + self.putType(innerType) + savedCurrentChildType = self.currentChildType + self.currentChildType = innerType.name + derefValue.name = '*' + self.putItem(derefValue) + self.currentChildType = savedCurrentChildType + self.putOriginalAddress(value.pointer()) + def putFormattedPointerX(self, value): #warn("PUT FORMATTED: %s" % value) pointer = value.pointer() @@ -1328,6 +1339,10 @@ class DumperBase: self.putNumChild(0) return + if self.currentIName.endswith('.this'): + self.putDerefedPointer(value) + return + displayFormat = self.currentItemFormat(value.type.name) innerType = value.type.target() #.unqualified() @@ -1375,18 +1390,10 @@ class DumperBase: #warn('AUTODEREF: %s' % self.autoDerefPointers) #warn('INAME: %s' % self.currentIName) #warn('INNER: %s' % innerType.name) - if self.autoDerefPointers or self.currentIName.endswith('.this'): - derefValue = value.dereference() - # Never dereference char types. + if self.autoDerefPointers: + # Generic pointer type with AutomaticFormat, but never dereference char types: if innerType.name not in ('char', 'signed char', 'unsigned char', 'wchar_t'): - # Generic pointer type with AutomaticFormat. - self.putType(innerType) - savedCurrentChildType = self.currentChildType - self.currentChildType = innerType.name - derefValue.name = '*' - self.putItem(derefValue) - self.currentChildType = savedCurrentChildType - self.putOriginalAddress(pointer) + self.putDerefedPointer(value) return #warn('GENERIC PLAIN POINTER: %s' % value.type) |