diff options
author | hjk <hjk121@nokiamail.com> | 2014-04-03 17:44:48 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-04-04 11:00:00 +0200 |
commit | d8adc10fbe2d662fefacd3f348da532ce847c619 (patch) | |
tree | 423951fbd69790a2006e6b8463462b8d7e42f146 /share | |
parent | ee3d38c16f9323d8dad9ddb1f917076934b29b5f (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.py | 22 |
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) |