diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index c3ac90001bf..37138fe4ee4 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -40,9 +40,6 @@ else: toInteger = long -verbosity = 0 -verbosity = 1 - # Debugger start modes. Keep in sync with DebuggerStartMode in debuggerconstants.h NoStartMode, \ StartInternal, \ @@ -1628,27 +1625,6 @@ class DumperBase: self.putType(typeName) self.putNumChild(0) - def putStructGuts(self, value): - self.putEmptyValue() - #warn("STRUCT GUTS: %s ADDRESS: %s " % (value.name, value.address())) - #metaObjectPtr = self.extractMetaObjectPtr(value.address(), value.type) - if self.showQObjectNames: - self.preping(self.currentIName) - metaObjectPtr = self.extractMetaObjectPtr(value.address(), value.type) - self.ping(self.currentIName) - if metaObjectPtr: - self.context = value - self.putQObjectNameValue(value) - #warn("STRUCT GUTS: %s MO: 0x%x " % (self.currentIName, metaObjectPtr)) - if self.isExpanded(): - self.put('sortable="1"') - with Children(self, 1, childType=None): - self.putFields(value) - if not self.showQObjectNames: - metaObjectPtr = self.extractMetaObjectPtr(value.address(), value.type) - if metaObjectPtr: - self.putQObjectGuts(value, metaObjectPtr) - # This is called is when a QObject derived class is expanded def putQObjectGuts(self, qobject, metaObjectPtr): self.putQObjectGutsHelper(qobject, qobject.address(), -1, metaObjectPtr, "QObject") @@ -2130,15 +2106,6 @@ class DumperBase: return value.extractSomething(pattern, bitsize) error("CANT EXTRACT FROM %s" % type(value)) - # FIXME: Note these should take target architecture into account. - #def extractLong(self, value): - # #return self.extractSomething(value, "l", 32) - # return self.extractSomething(value, "q", 64) -# -# # FIXME: Note these should take target architecture into account. -## def extractULong(self, value): -# return self.extractSomething(value, "Q", 64) - # Parses a..b and a.(s).b def parseRange(self, exp): @@ -2528,13 +2495,6 @@ class DumperBase: return False def putItem(self, value, tryDynamic=True): - #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.putSpecialValue("notaccessible") - # self.putType("") - # return True - #warn("ITEM: %s" % value.stringify()) typeobj = value.type #unqualified() @@ -2677,8 +2637,26 @@ class DumperBase: #warn("EXPANDED: %s " % (self.currentIName in self.expandedINames)) self.putType(typeName) self.putNumChild(1) - #self.putNumChild(value.hasChildren()) - self.putStructGuts(value) + self.putEmptyValue() + #warn("STRUCT GUTS: %s ADDRESS: %s " % (value.name, value.address())) + #metaObjectPtr = self.extractMetaObjectPtr(value.address(), value.type) + if self.showQObjectNames: + self.preping(self.currentIName) + metaObjectPtr = self.extractMetaObjectPtr(value.address(), value.type) + self.ping(self.currentIName) + if metaObjectPtr: + self.context = value + self.putQObjectNameValue(value) + #warn("STRUCT GUTS: %s MO: 0x%x " % (self.currentIName, metaObjectPtr)) + if self.isExpanded(): + self.put('sortable="1"') + with Children(self, 1, childType=None): + self.putFields(value) + if not self.showQObjectNames: + metaObjectPtr = self.extractMetaObjectPtr(value.address(), value.type) + if metaObjectPtr: + self.putQObjectGuts(value, metaObjectPtr) + def qtTypeInfoVersion(self): return 11 # FIXME @@ -3008,11 +2986,6 @@ class DumperBase: rawBytes = self.data(size) return struct.unpack_from(code, rawBytes, 0)[0] - def hasChildren(self): - if self.nativeValue is not None: - return self.dumper.nativeValueHasChildren(self.nativeValue) - return False - def to(self, pattern): return self.split(pattern)[0] diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index ddd210178bb..1c9a5771c58 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -27,11 +27,8 @@ try: import __builtin__ except: import builtins -try: - import gdb -except: - pass +import gdb import os import os.path import sys @@ -187,16 +184,6 @@ class OutputSafer: -#def couldBePointer(p, align): -# typeobj = lookupType("unsigned int") -# ptr = gdb.Value(p).cast(typeobj) -# d = int(str(ptr)) -# warn("CHECKING : %s %d " % (p, ((d & 3) == 0 and (d > 1000 or d == 0)))) -# return (d & (align - 1)) and (d > 1000 or d == 0) - - -Value = gdb.Value - ####################################################################### # # The Dumper Class @@ -298,21 +285,6 @@ class Dumper(DumperBase): }[nativeType.code] return typeobj - def fromNativeField(self, nativeField): - self.check(isinstance(nativeField, gdb.Field)) - field = self.Field(self) - field.ltype = self.fromNativeType(nativeField.type) - field.parentType = self.fromNativeType(nativeField.parent_type) - field.name = nativeField.name - field.isBaseClass = nativeField.is_base_class - if hasattr(nativeField, 'bitpos'): - field.lbitpos = nativeField.bitpos - if hasattr(nativeField, 'bitsize') and nativeField.bitsize != 0: - field.lbitsize = nativeField.bitsize - else: - field.lbitsize = 8 * nativeField.type.sizeof - return field - def nativeValueDereference(self, nativeValue): return self.nativeValueDownCast(nativeValue.dereference()) @@ -329,7 +301,6 @@ class Dumper(DumperBase): return self.fromNativeType(nativeType.strip_typedefs().target()) def nativeTypeUnqualified(self, nativeType): - #warn("NATIVE TYPE: %s" % nativeType) return self.fromNativeType(nativeType.unqualified()) def nativeTypePointer(self, nativeType): @@ -340,15 +311,6 @@ class Dumper(DumperBase): nativeType = nativeType.strip_typedefs().unqualified() return self.fromNativeType(nativeType.target()) - def nativeValueHasChildren(self, nativeValue): - nativeType = nativeValue.type - if nativeType.code == gdb.TYPE_CODE_ARRAY: - return True - if nativeType.code not in (gdb.TYPE_CODE_STRUCT, gdb.TYPE_CODE_UNION): - return False - nativeFields = nativeType.fields() - return len(nativeFields) > 0 - def nativeTypeFirstBase(self, nativeType): nativeFields = nativeType.fields() if len(nativeFields) and nativeFields[0].is_base_class: @@ -362,7 +324,6 @@ class Dumper(DumperBase): return "%d" % intval def nativeTypeFields(self, nativeType): - #warn("TYPE: %s" % nativeType) fields = [] if nativeType.code == gdb.TYPE_CODE_ARRAY: # An array. diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index f5e55c6236f..8f175d2fa28 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -501,16 +501,6 @@ class Dumper(DumperBase): return self.fromNativeType(nativeType.GetVectorElementType()) return self.fromNativeType(nativeType) - def nativeValueHasChildren(self, nativeValue): - nativeType = nativeValue.type - code = nativeType.GetTypeClass() - if code == lldb.eTypeClassArray: - return True - if code not in (lldb.eTypeClassStruct, lldb.eTypeClassUnion): - return False - return nativeType.GetNumberOfFields() > 0 \ - or nativeType.GetNumberOfDirectBaseClasses() > 0 - def isWindowsTarget(self): return False