aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-04-03 17:44:48 +0200
committerhjk <hjk121@nokiamail.com>2014-04-04 11:00:00 +0200
commitd8adc10fbe2d662fefacd3f348da532ce847c619 (patch)
tree423951fbd69790a2006e6b8463462b8d7e42f146 /share
parentee3d38c16f9323d8dad9ddb1f917076934b29b5f (diff)
Debugger: More direct way to extract dynamic QObject properties
This avoids the address == -1 problem for generated values with LLDB. Change-Id: I13cfc7387d8e5329b588d6d841cd9c2322270363 Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/dumper.py22
1 files changed, 6 insertions, 16 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 326d34fd39..3d9f6bcd79 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -1037,15 +1037,15 @@ class DumperBase:
addr += 1
return result
- def generateQListChildren(self, value):
- base = self.extractPointer(value)
+ def listChildrenGenerator(self, addr, typeName):
+ innerType = self.lookupType(self.qtNamespace() + typeName)
+ base = self.extractPointer(addr)
begin = self.extractInt(base + 8)
end = self.extractInt(base + 12)
array = base + 16
if self.qtVersion() < 0x50000:
array += self.ptrSize()
size = end - begin
- innerType = self.templateArgument(value.type, 0)
innerSize = innerType.sizeof
stepSize = self.ptrSize()
addr = array + begin * stepSize
@@ -1084,19 +1084,9 @@ class DumperBase:
# Dynamic properties.
if extraData:
- propertyNames = extraData + ptrSize
- propertyValues = extraData + 2 * ptrSize
-
- ns = self.qtNamespace()
-
- typ = self.lookupType(ns + "QList<" + ns + "QByteArray>")
- names = self.createValue(propertyNames, typ)
-
- typ = self.lookupType(ns + "QList<" + ns + "QVariant>")
- values = self.createValue(propertyValues, typ)
-
- for (k, v) in zip(self.generateQListChildren(names),
- self.generateQListChildren(values)) :
+ names = self.listChildrenGenerator(extraData + ptrSize, "QByteArray")
+ values = self.listChildrenGenerator(extraData + 2 * ptrSize, "QVariant")
+ for (k, v) in zip(names, values):
with SubItem(self, propertyCount):
self.put('key="%s",' % self.encodeByteArray(k))
self.put('keyencoded="%s",' % Hex2EncodedLatin1)