Debugger: Use SBTarget.CreateValueFromAddress instead of SBValue

SBTarget.CreateValueFromAddress was not supported by older
versions of LLDB. Unfortunately, we still can't use
SBTarget.CreateValueFromExpression.

Change-Id: I982021531a2ab070aa279dd17e9714f86efe83cc
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
hjk
2015-04-02 17:24:11 +02:00
parent 08ad4bef77
commit c24640bae1

View File

@@ -579,11 +579,17 @@ class Dumper(DumperBase):
def createPointerValue(self, address, pointeeType):
addr = int(address) & 0xFFFFFFFFFFFFFFFF
return self.context.CreateValueFromAddress(None, addr, pointeeType).AddressOf()
sbaddr = lldb.SBAddress(addr, self.target)
# Any type.
# FIXME: This can be replaced with self.target.CreateValueFromExpression
# as soon as we drop support for lldb builds not having that (~Xcode 6.1)
dummy = self.target.CreateValueFromAddress('@', sbaddr, self.target.FindFirstType('char'))
return dummy.CreateValueFromExpression('', '(%s*)%s' % (pointeeType, addr))
def createValue(self, address, referencedType):
addr = int(address) & 0xFFFFFFFFFFFFFFFF
return self.context.CreateValueFromAddress(None, addr, referencedType)
sbaddr = lldb.SBAddress(addr, self.target)
return self.target.CreateValueFromAddress(None, sbaddr, referencedType)
def childRange(self):
if self.currentMaxNumChild is None: