diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 5e211885ce5..e66900c1ef6 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -3201,13 +3201,17 @@ class DumperBase(): val.laddress = self.pointer() if val.laddress is None and self.laddress is not None: val.laddress = self.laddress - val.type = self.dumper.nativeDynamicType(val.laddress, self.type.dereference()) + val.type = self.type.dereference() + if self.dumper.useDynamicType: + val.type = self.dumper.nativeDynamicType(val.laddress, val.type) else: val = self.dumper.nativeValueDereferenceReference(self) elif self.type.code == TypeCode.Pointer: if self.nativeValue is None: val.laddress = self.pointer() - val.type = self.dumper.nativeDynamicType(val.laddress, self.type.dereference()) + val.type = self.type.dereference() + if self.dumper.useDynamicType: + val.type = self.dumper.nativeDynamicType(val.laddress, val.type) else: val = self.dumper.nativeValueDereferencePointer(self) else: @@ -3662,7 +3666,9 @@ class DumperBase(): % type(targetTypish)) val = self.Value(self) val.ldata = self.toPointerData(targetAddress) - targetType = self.createType(targetTypish).dynamicType(targetAddress) + targetType = self.createType(targetTypish) + if self.useDynamicType: + targetType = targetType.dynamicType(targetAddress) val.type = self.createPointerType(targetType) return val @@ -3675,7 +3681,8 @@ class DumperBase(): % type(targetType)) val = self.Value(self) val.ldata = self.toPointerData(targetAddress) - targetType = targetType.dynamicType(targetAddress) + if self.useDynamicType: + targetType = targetType.dynamicType(targetAddress) val.type = self.createReferenceType(targetType) return val @@ -3848,7 +3855,8 @@ class DumperBase(): if self.isInt(datish): # Used as address. #DumperBase.warn('CREATING %s AT 0x%x' % (val.type.name, datish)) val.laddress = datish - val.type = val.type.dynamicType(datish) + if self.useDynamicType: + val.type = val.type.dynamicType(datish) return val if isinstance(datish, bytes): #DumperBase.warn('CREATING %s WITH DATA %s' % (val.type.name, self.hexencode(datish))) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index ae20b57ada8..c81bca1dd50 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -229,10 +229,11 @@ class Dumper(DumperBase): def fromFrameValue(self, nativeValue): #DumperBase.warn('FROM FRAME VALUE: %s' % nativeValue.address) val = nativeValue - try: - val = nativeValue.cast(nativeValue.dynamic_type) - except: - pass + if self.useDynamicType: + try: + val = nativeValue.cast(nativeValue.dynamic_type) + except: + pass return self.fromNativeValue(val) def fromNativeValue(self, nativeValue): @@ -1151,7 +1152,9 @@ class Dumper(DumperBase): def nativeValueDereferencePointer(self, value): # This is actually pretty expensive, up to 100ms. deref = value.nativeValue.dereference() - return self.fromNativeValue(deref.cast(deref.dynamic_type)) + if self.useDynamicType: + deref = deref.cast(deref.dynamic_type) + return self.fromNativeValue(deref) def nativeValueDereferenceReference(self, value): nativeValue = value.nativeValue