summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-04-24 16:42:30 +0200
committerhjk <hjk@qt.io>2017-04-25 10:24:50 +0000
commit5784a96596a95aaa43173f58b71c0d3c6a0138e6 (patch)
tree23270da9d6133dcbf5d2b4962600433f5d6fbf53 /share
parentb952d0420e1fe2b128934d59d9f47f14d337cbf6 (diff)
downloadqt-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.py29
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)