Debugger: Use a more robust fallback for SBValue.Dereference

Change-Id: Ie81899017c7e711ea8b04d85f8298b0d73f1cbab
(cherry picked from commit 88114aba3ef4ccf2d1597e9a21dd49efb8c86717)
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
hjk
2014-01-30 18:13:45 +01:00
parent 7df04793d7
commit 6dc03f7259
+3 -4
View File
@@ -189,10 +189,8 @@ def impl_SBValue__deref(value):
result = value.Dereference()
if result.IsValid():
return result
#warn("RESULT.LOADADDRESS A: 0x%x" % result.GetLoadAddress())
result = value.CreateValueFromAddress(None, value.GetValueAsUnsigned(), value.GetType().GetPointerType())
#warn("RESULT.LOADADDRESS B: 0x%x" % result.GetLoadAddress())
return result
exp = "*(class %s*)0x%x" % (value.GetType().GetPointeeType(), value.GetValueAsUnsigned())
return value.CreateValueFromExpression(None, exp)
lldb.SBValue.__add__ = impl_SBValue__add__
lldb.SBValue.__sub__ = impl_SBValue__sub__
@@ -1046,6 +1044,7 @@ class Dumper(DumperBase):
for i in xrange(m, n):
#for i in range(n):
child = value.GetChildAtIndex(i)
# Only needed in the QVariant4 test.
if int(child.GetLoadAddress()) == 0xffffffffffffffff:
typeClass = child.GetType().GetTypeClass()
if typeClass != lldb.eTypeClassBuiltin: