diff options
Diffstat (limited to 'share/qtcreator/debugger/gdbbridge.py')
-rw-r--r-- | share/qtcreator/debugger/gdbbridge.py | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 088a618b0ca..b2047d867bf 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -465,7 +465,7 @@ class Dumper(DumperBase): if self.passExceptions: showException("SUBITEM", exType, exValue, exTraceBack) self.putNumChild(0) - self.putValue("<not accessible>") + self.putSpecialValue(SpecialNotAccessibleValue) try: if self.currentType.value: typeName = self.stripClassTag(self.currentType.value) @@ -473,7 +473,8 @@ class Dumper(DumperBase): self.put('type="%s",' % typeName) # str(type.unqualified()) ? if self.currentValue.value is None: - self.put('value="<not accessible>",numchild="0",') + self.put('value="",encoding="%d","numchild="0",' + % SpecialNotAccessibleValue) else: if not self.currentValue.encoding is None: self.put('valueencoded="%d",' % self.currentValue.encoding) @@ -930,7 +931,7 @@ class Dumper(DumperBase): if value is None: # Happens for non-available watchers in gdb versions that # need to use gdb.execute instead of gdb.parse_and_eval - self.putValue("<not available>") + self.putSpecialValue(SpecialNotAvailableValue) self.putType("<unknown>") self.putNumChild(0) return @@ -939,7 +940,7 @@ class Dumper(DumperBase): typeName = str(typeobj) if value.is_optimized_out: - self.putValue("<optimized out>") + self.putSpecialValue(SpecialOptimizedOutValue) self.putType(typeName) self.putNumChild(0) return @@ -960,7 +961,7 @@ class Dumper(DumperBase): try: # Try to recognize null references explicitly. if toInteger(value.address) == 0: - self.putValue("<null reference>") + self.putSpecialValue(SpecialNullReferenceValue) self.putType(typeName) self.putNumChild(0) return @@ -988,7 +989,7 @@ class Dumper(DumperBase): self.putBetterType("%s &" % self.currentType.value) return except RuntimeError: - self.putValue("<optimized out reference>") + self.putSpecialValue(SpecialOptimizedOutValue) self.putType(typeName) self.putNumChild(0) return @@ -1069,7 +1070,7 @@ class Dumper(DumperBase): # Anonymous union. We need a dummy name to distinguish # multiple anonymous unions in the struct. self.putType(typeobj) - self.putValue("{...}") + self.putSpecialValue(SpecialEmptyStructureValue) self.anonNumber += 1 with Children(self, 1): self.listAnonymous(value, "#%d" % self.anonNumber, typeobj) @@ -1155,7 +1156,13 @@ class Dumper(DumperBase): def putFields(self, value, dumpBase = True): fields = value.type.fields() if self.sortStructMembers: - fields.sort(key = lambda field: "%d%s" % (not field.is_base_class, field.name)) + def sortOrder(field): + if field.is_base_class: + return 0 + if field.name and field.name.startswith("_vptr."): + return 1 + return 2 + fields.sort(key = lambda field: "%d%s" % (sortOrder(field), field.name)) #warn("TYPE: %s" % value.type) #warn("FIELDS: %s" % fields) @@ -1706,7 +1713,7 @@ class CliDumper(Dumper): if self.passExceptions: showException("SUBITEM", exType, exValue, exTraceBack) self.putNumChild(0) - self.putValue("<not accessible>") + self.putSpecialValue(SpecialNotAccessibleValue) try: if self.currentType.value: typeName = self.stripClassTag(self.currentType.value) |