aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2020-06-29 09:34:57 +0300
committerOrgad Shaneh <orgads@gmail.com>2020-07-03 09:07:46 +0000
commit00e814fdd18dadbea5942d002914b99fb07c4048 (patch)
tree379f0945fbd31d27e7a09cf5e3e8c4559bb3bc30 /share
parent94f9544df5138105271ac34415b7abd1fdc58919 (diff)
Debugger: Respect "Use Dynamic Object Type for Display"
Broke in 5efa84830bb41bfc11db9295df3ad34f5b9bd9f5. Task-number: QTCREATORBUG-24280 Change-Id: Ice4b9d826d2402efb354180886d35926a2513e5a Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/debugger/dumper.py18
-rw-r--r--share/qtcreator/debugger/gdbbridge.py13
2 files changed, 21 insertions, 10 deletions
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