aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/debugger
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-09-17 10:28:19 +0200
committerEike Ziller <eike.ziller@qt.io>2020-09-17 10:28:19 +0200
commit5ad724c61bc78cad19b265b177635c1e48bcbbaf (patch)
tree53d7e9467d0b62396535224b9d89866ae4509d23 /share/qtcreator/debugger
parent0d185a0ad3f3efc2690356c7567d8351827deb88 (diff)
parent364288b79cfb27f4bea9a7a41b785660fb8d0dde (diff)
Merge remote-tracking branch 'origin/4.13' into master
Conflicts: src/plugins/qmakeprojectmanager/qmakeproject.cpp Change-Id: Ieb1c3e946f11d3c4fa1ee6b5afdf83cc532d8aed
Diffstat (limited to 'share/qtcreator/debugger')
-rw-r--r--share/qtcreator/debugger/lldbbridge.py23
1 files changed, 14 insertions, 9 deletions
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 31d180898a..13ad3d3e9e 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -121,6 +121,8 @@ class Dumper(DumperBase):
self.process = None
self.target = None
+ self.fakeAddress_ = None
+ self.fakeLAddress_ = None
self.eventState = lldb.eStateInvalid
self.executable_ = None
@@ -258,10 +260,15 @@ class Dumper(DumperBase):
return align
def listMembers(self, value, nativeType):
- #DumperBase.warn("ADDR: 0x%x" % self.fakeAddress)
- fakeAddress = self.fakeAddress if value.laddress is None else value.laddress
- sbaddr = lldb.SBAddress(fakeAddress, self.target)
- fakeValue = self.target.CreateValueFromAddress('x', sbaddr, nativeType)
+ #DumperBase.warn("ADDR: 0x%x" % self.fakeAddress_)
+ if value.laddress:
+ fakeAddress = lldb.SBAddress(value.laddress, self.target)
+ fakeLAddress = value.laddress
+ else:
+ fakeAddress = self.fakeAddress_
+ fakeLAddress = self.fakeLAddress_
+
+ fakeValue = self.target.CreateValueFromAddress('x', fakeAddress, nativeType)
fakeValue.SetPreferSyntheticValue(False)
baseNames = {}
@@ -304,7 +311,7 @@ class Dumper(DumperBase):
fieldName = '#%s' % anonNumber
fakeMember = fakeValue.GetChildAtIndex(i)
fakeMemberAddress = fakeMember.GetLoadAddress()
- offset = fakeMemberAddress - fakeAddress
+ offset = fakeMemberAddress - fakeLAddress
yield self.Field(self, name=fieldName, type=self.fromNativeType(nativeFieldType),
bitsize=fieldBitsize, bitpos=8 * offset)
@@ -1228,10 +1235,6 @@ class Dumper(DumperBase):
if not self.partialVariable:
self.resetPerStepCaches()
- anyModule = self.target.GetModuleAtIndex(0)
- anySymbol = anyModule.GetSymbolAtIndex(0)
- self.fakeAddress = int(anySymbol.GetStartAddress())
-
frame = self.currentFrame()
if frame is None:
self.reportResult('error="No frame"', args)
@@ -1968,6 +1971,8 @@ class Tester(Dumper):
if line != 0:
self.report = savedReport
self.process.SetSelectedThread(stoppedThread)
+ self.fakeAddress_ = frame.GetPC()
+ self.fakeLAddress_ = frame.GetPCAddress()
self.fetchVariables(args)
#self.describeLocation(frame)
self.report('@NS@%s@' % self.qtNamespace())