aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/debugger/gdbbridge.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/qtcreator/debugger/gdbbridge.py')
-rw-r--r--share/qtcreator/debugger/gdbbridge.py25
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)