summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2022-05-13 10:05:47 +0200
committerChristian Stenger <christian.stenger@qt.io>2022-05-13 08:53:55 +0000
commit9be10225cc5a85a87e70638952e742ba5dab2503 (patch)
tree6b3280248b6614585fa08263886d9810671d741b
parent0334d4886b67dc9fe7393fdb04d636dc44e8f492 (diff)
downloadqt-creator-9be10225cc5a85a87e70638952e742ba5dab2503.tar.gz
Dumper: Fix Environment dumper
Change-Id: I48349ca550981d19cf0087bccd38e4d2677d1897 Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--share/qtcreator/debugger/creatortypes.py62
1 files changed, 37 insertions, 25 deletions
diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py
index 5d6b5e0414..1a75590e4e 100644
--- a/share/qtcreator/debugger/creatortypes.py
+++ b/share/qtcreator/debugger/creatortypes.py
@@ -263,32 +263,44 @@ def qdump__Utils__Environment(d, value):
qdump__Utils__NameValueDictionary(d, value)
+def qdump__Utils__DictKey(d, value):
+ d.putStringValue(value["name"])
+
+
def qdump__Utils__NameValueDictionary(d, value):
- dptr = d.extractPointer(value["m_values"])
- (ref, n) = d.split('ii', dptr)
- d.check(0 <= n and n <= 100 * 1000 * 1000)
- d.check(-1 <= ref and ref < 100000)
-
- d.putItemCount(n)
- if d.isExpanded():
- if n > 10000:
- n = 10000
-
- typeCode = 'ppp@{%s}@{%s}' % ("Utils::DictKey", "QString")
-
- def helper(node):
- (p, left, right, padding1, key, padding2, value) = d.split(typeCode, node)
- if left:
- for res in helper(left):
- yield res
- yield (key["name"], value)
- if right:
- for res in helper(right):
- yield res
-
- with Children(d, n):
- for (pair, i) in zip(helper(dptr + 8), range(n)):
- d.putPairItem(i, pair, 'key', 'value')
+ dptr = d.extractPointer(value)
+ if d.qtVersion() >= 0x60000:
+ if dptr == 0:
+ d.putItemCount(0)
+ return
+ m = value['d']['d']['m']
+ d.putItem(m)
+ d.putBetterType('Utils::NameValueDictionary')
+ else: # Qt5
+ (ref, n) = d.split('ii', dptr)
+ d.check(0 <= n and n <= 100 * 1000 * 1000)
+ d.check(-1 <= ref and ref < 100000)
+
+ d.putItemCount(n)
+ if d.isExpanded():
+ if n > 10000:
+ n = 10000
+
+ typeCode = 'ppp@{%s}@{%s}' % ("Utils::DictKey", "@QPair<@QString,bool>")
+
+ def helper(node):
+ (p, left, right, padding1, key, padding2, value) = d.split(typeCode, node)
+ if left:
+ for res in helper(left):
+ yield res
+ yield (key["name"], value)
+ if right:
+ for res in helper(right):
+ yield res
+
+ with Children(d, n):
+ for (pair, i) in zip(helper(dptr + 8), range(n)):
+ d.putPairItem(i, pair, 'key', 'value')
def qdump__Utf8String(d, value):