diff --git a/share/qtcreator/debugger/cdbbridge.py b/share/qtcreator/debugger/cdbbridge.py index 6fc77b5ea67..986774d5086 100644 --- a/share/qtcreator/debugger/cdbbridge.py +++ b/share/qtcreator/debugger/cdbbridge.py @@ -172,15 +172,17 @@ class Dumper(DumperBase): self.type_name_cache[typeid] = nativeType.name() self.type_code_cache[typeid] = code self.type_target_cache[typeid] = self.typeid_for_string(targetName) - self.type_size_cache[typeid] = nativeType.bitsize() // 8 + if nativeType.resolved(): + self.type_size_cache[typeid] = nativeType.bitsize() // 8 return typeid code = TypeCode.Struct self.type_name_cache[typeid] = nativeType.name() - self.type_size_cache[typeid] = nativeType.bitsize() // 8 + if nativeType.resolved(): + self.type_size_cache[typeid] = nativeType.bitsize() // 8 + self.type_modulename_cache[typeid] = nativeType.module() self.type_code_cache[typeid] = code - self.type_modulename_cache[typeid] = nativeType.module() self.type_enum_display_cache[typeid] = lambda intval, addr, form: \ self.nativeTypeEnumDisplay(nativeType, intval, form) return typeid @@ -549,7 +551,6 @@ class Dumper(DumperBase): return self.putAddress(value.address()) - self.putField('size', self.type_size(value.typeid)) if typeobj.code == TypeCode.Function: #DumperBase.warn('FUNCTION VALUE: %s' % value) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 250c04e80e8..57da7608204 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -2446,7 +2446,7 @@ typename)) self.checkIntType(base) self.checkIntType(n) inner_typeid = self.typeid_for_typish(inner_typish) - inner_size = self.type_size_cache.get(inner_typeid, None) + inner_size = self.type_size(inner_typeid) self.putNumChild(n) #self.warn('ADDRESS: 0x%x INNERSIZE: %s INNERTYPE: %s' % (base, inner_size, inner_typeid)) enc = self.type_encoding_cache.get(inner_typeid, None) @@ -3565,7 +3565,9 @@ typename)) return target_typeid self.type_code_cache[typeid] = TypeCode.Typedef self.type_target_cache[typeid] = target_typeid - self.type_size_cache[typeid] = self.type_size_cache.get(target_typeid, None) + size = self.type_size_cache.get(target_typeid, None) + if size is not None: + self.type_size_cache[typeid] = size return typeid def createType(self, typish, size=None): @@ -3711,7 +3713,7 @@ typename)) typeid = self.cheap_typeid_from_name_nons(typename) if typeid: - size = self.type_size_cache.get(typeid, None) + size = self.type_size(typeid) if size is not None: return size, typeid @@ -3719,7 +3721,7 @@ typename)) self.warn("LOOKUP FIELD TYPE: %s TYPEOBJ: %s" % (typename, typeobj)) if typeobj is not None: typeid = typeobj.typeid - size = self.type_size_cache.get(typeid, None) + size = self.type_size(typeid) if size is not None: return size, typeid @@ -3950,8 +3952,10 @@ typename)) if size is not None: return size - if size is None: - nativeType = self.type_nativetype(typeid) + nativeType = self.type_nativetype(typeid) + if self.isCdb: + size = nativeType.bitsize() // 8 + else: if not self.type_size_cache.get(typeid): self.from_native_type(nativeType) size = self.type_size_cache.get(typeid, None)