diff options
author | hjk <hjk@qt.io> | 2020-12-08 12:19:19 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-12-08 12:59:24 +0000 |
commit | 73f2ea11dd6ea2b24f489983c2612d4c13f98db7 (patch) | |
tree | c195da645c689379da63abc1fe71d27b4fd84431 | |
parent | 8044e7c50561dce82ff4d4a01419e11b9770b982 (diff) |
Debugger: Make GDB dumper tests pass with Qt release builds
Change-Id: I45ae41486b8081bb803290895e942a71d41d5c0d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | share/qtcreator/debugger/dumper.py | 16 | ||||
-rw-r--r-- | share/qtcreator/debugger/qttypes.py | 7 |
2 files changed, 16 insertions, 7 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 731797bb6a..66c826f101 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -3847,8 +3847,6 @@ class DumperBase(): return self.knownArrayTypeSize() if typish == 'QObject': return 2 * self.ptrSize() - if typish == 'QStandardItemData': - return 4 * self.ptrSize() if self.qtVersion() >= 0x060000 else 2 * self.ptrSize() if typish == 'Qt::ItemDataRole': return 4 if typish == 'QChar': @@ -3860,7 +3858,12 @@ class DumperBase(): def createType(self, typish, size=None): if isinstance(typish, self.Type): #typish.check() - return typish + if hasattr(typish, 'lbitsize') and typish.lbitsize is not None and typish.lbitsize > 0: + return typish + # Size 0 is sometimes reported by GDB but doesn't help at all. + # Force using the fallback: + typish = typish.name + if isinstance(typish, str): ns = self.qtNamespace() typish = typish.replace('@', ns) @@ -3875,7 +3878,9 @@ class DumperBase(): tdata = self.typeData.get(typish, None) if tdata is not None: - return self.Type(self, typish) + if tdata.lbitsize is not None: + if tdata.lbitsize > 0: + return self.Type(self, typish) knownType = self.lookupType(typish) #DumperBase.warn('KNOWN: %s' % knownType) @@ -3888,6 +3893,9 @@ class DumperBase(): tdata.name = typish tdata.typeId = typish tdata.templateArguments = self.listTemplateParameters(typish) + if typish.endswith('*'): + tdata.code = TypeCode.Pointer + tdata.lbitsize = 8 * self.ptrSize() if size is not None: tdata.lbitsize = 8 * size diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 94c9952183..ebff0247cb 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -249,9 +249,10 @@ def qdump__QStandardItemData(d, value): def qdump__QStandardItem(d, value): - d.createType('@QStandardItemData') # warm up cache - d.createType('@QStandardItem') - d.createType('@QStandardItem*') + # warm up cache + data_size = 4 * d.ptrSize() if d.qtVersion() >= 0x060000 else 2 * d.ptrSize() + d.createType('@QStandardItemData', data_size) + vtable, dptr = value.split('pp') # There used to be a virtual destructor that got removed in # 88b6abcebf29b455438 on Apr 18 17:01:22 2017 |