aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-12-08 12:19:19 +0100
committerhjk <hjk@qt.io>2020-12-08 12:59:24 +0000
commit73f2ea11dd6ea2b24f489983c2612d4c13f98db7 (patch)
treec195da645c689379da63abc1fe71d27b4fd84431
parent8044e7c50561dce82ff4d4a01419e11b9770b982 (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.py16
-rw-r--r--share/qtcreator/debugger/qttypes.py7
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