diff options
author | hjk <hjk@theqtcompany.com> | 2015-05-29 08:23:52 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2015-06-11 08:40:51 +0000 |
commit | 7c8d20ded74bbeab6249b81b34f7078f3f385a81 (patch) | |
tree | 07429c180c8f1de1902373868c60de4331f97ace /share | |
parent | a96894049482555c714074d717f1470b1d08770f (diff) | |
download | qt-creator-7c8d20ded74bbeab6249b81b34f7078f3f385a81.tar.gz |
Debugger: Pass request to sort struct members to {gdb,lldb}bridge.py
The request will be honored when creating the values
instead of re-sorting in the frontend.
Change-Id: I0ea13bd9b0700a4d2ae4f0b355c56ddd37557398
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Diffstat (limited to 'share')
-rw-r--r-- | share/qtcreator/debugger/gdbbridge.py | 6 | ||||
-rw-r--r-- | share/qtcreator/debugger/lldbbridge.py | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index e96fe86d63..4c9216c381 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -262,6 +262,8 @@ class Dumper(DumperBase): self.autoDerefPointers = int(args.get("autoderef", "0")) self.partialUpdate = int(args.get("partial", "0")) self.fallbackQtVersion = 0x50200 + self.sortStructMembers = bool(args.get("sortStructMembers", True)) + #warn("NAMESPACE: '%s'" % self.qtNamespace()) #warn("EXPANDED INAMES: %s" % self.expandedINames) #warn("WATCHERS: %s" % self.watchers) @@ -399,6 +401,7 @@ class Dumper(DumperBase): # Don't bother. It's only supplementary information anyway. pass + locals.sort(key = lambda item: item.name) for item in locals: value = self.downcast(item.value) if self.useDynamicType else item.value with OutputSafer(self): @@ -1143,6 +1146,9 @@ class Dumper(DumperBase): def putFields(self, value, dumpBase = True): fields = value.type.fields() + if self.sortStructMembers: + fields.sort(key = lambda field: + '[' + field.name if field.is_base_class else field.name) #warn("TYPE: %s" % value.type) #warn("FIELDS: %s" % fields) diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 98d581543c..64fcf71dd6 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -1145,9 +1145,11 @@ class Dumper(DumperBase): self.put('iname="%s",' % self.currentIName) self.put('name="[%s]",' % child.name) self.putItem(child) - for i in xrange(m, n): - #for i in range(n): - child = value.GetChildAtIndex(i) + + children = [value.GetChildAtIndex(i) for i in xrange(m, n)] + if self.sortStructMembers: + children.sort(key = lambda child: str(child.GetName())) + for child in children: # Only needed in the QVariant4 test. if int(child.GetLoadAddress()) == 0xffffffffffffffff: typeClass = child.GetType().GetTypeClass() @@ -1655,6 +1657,7 @@ class Dumper(DumperBase): self.reportToken(args) self.expandedINames = set(args.get('expanded', [])) self.autoDerefPointers = int(args.get('autoderef', '0')) + self.sortStructMembers = bool(args.get("sortStructMembers", True)); self.useDynamicType = int(args.get('dyntype', '0')) self.useFancy = int(args.get('fancy', '0')) self.passExceptions = int(args.get('passexceptions', '0')) |