diff options
author | Eike Ziller <eike.ziller@qt.io> | 2020-09-17 10:28:19 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2020-09-17 10:28:19 +0200 |
commit | 5ad724c61bc78cad19b265b177635c1e48bcbbaf (patch) | |
tree | 53d7e9467d0b62396535224b9d89866ae4509d23 /share/qtcreator/debugger | |
parent | 0d185a0ad3f3efc2690356c7567d8351827deb88 (diff) | |
parent | 364288b79cfb27f4bea9a7a41b785660fb8d0dde (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.py | 23 |
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()) |