diff options
author | hjk <hjk121@nokiamail.com> | 2014-11-26 18:10:14 +0100 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-11-28 14:55:03 +0100 |
commit | bf9a3b2020b033e8dc303fcb2b810d3b0051db25 (patch) | |
tree | f11034f51ca182ec6a2aeb8dda315c03dc46aa04 /share | |
parent | 55a6050f37ad1ad60380782e87441d5467c569a1 (diff) | |
download | qt-creator-bf9a3b2020b033e8dc303fcb2b810d3b0051db25.tar.gz |
Debugger: Fix LLDB reference display for LLDB 320.x
There is seemingly still no proper API for that, and
the old hack broke. Use a new one.
Change-Id: I9e638ca1fbd84c43c7d31b65e017792d1b6a1e0b
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Diffstat (limited to 'share')
-rw-r--r-- | share/qtcreator/debugger/lldbbridge.py | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 933c89b544..6a381f9f81 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -920,7 +920,6 @@ class Dumper(DumperBase): return False def putItem(self, value, tryDynamic=True): - #value = value.GetDynamicValue(lldb.eDynamicCanRunTarget) typeName = value.GetType().GetUnqualifiedType().GetName() if self.isGoodLldb: value.SetPreferDynamicValue(tryDynamic) @@ -965,10 +964,11 @@ class Dumper(DumperBase): realType = value.GetType() if hasattr(realType, 'GetCanonicalType'): baseType = realType.GetCanonicalType() - baseValue = value.Cast(baseType.unqualified()) - self.putItem(baseValue) - self.putBetterType(realType) - return + if baseType != realType: + baseValue = value.Cast(baseType.unqualified()) + self.putItem(baseValue) + self.putBetterType(realType) + return # Our turf now. if self.isGoodLldb: @@ -986,11 +986,24 @@ class Dumper(DumperBase): # References if value.GetType().IsReferenceType(): - origType = value.GetTypeName(); type = value.GetType().GetDereferencedType().unqualified() - addr = value.GetLoadAddress() - self.putItem(value.CreateValueFromAddress(None, addr, type)) - self.putBetterType(origType) + addr = value.GetValueAsUnsigned() + #warn("FROM: %s" % value) + #warn("ADDR: 0x%x" % addr) + #warn("TYPE: %s" % type) + # Works: + #item = self.currentThread().GetSelectedFrame().EvaluateExpression( + # "(%s*)0x%x" % (type, addr)).Dereference() + # Works: + item = value.CreateValueFromExpression(None, + "(%s*)0x%x" % (type, addr), lldb.SBExpressionOptions()).Dereference() + # Does not work: + #item = value.CreateValueFromAddress(None, addr, type) + # Does not work: + #item = value.Cast(type.GetPointerType()).Dereference() + #warn("TOOO: %s" % item) + self.putItem(item) + self.putBetterType(value.GetTypeName()) return # Pointers @@ -1534,7 +1547,6 @@ class Dumper(DumperBase): def selectThread(self, args): self.process.SetSelectedThreadByID(args['id']) self.reportData() - self.reportStack() def requestModuleSymbols(self, frame): self.handleCommand("target module list " + frame) |