r"""bthread_frame , select bthread frame by id
(debugger, command, result, internal_dict)
| 231 | |
| 232 | |
| 233 | def bthread_frame(debugger, command, result, internal_dict): |
| 234 | r"""bthread_frame <id>, select bthread frame by id""" |
| 235 | bthread = global_state.get_bthread(command) |
| 236 | if bthread is None: |
| 237 | return |
| 238 | |
| 239 | stack = bthread.GetChildMemberWithName("stack") |
| 240 | context = stack.Dereference().GetChildMemberWithName("context") |
| 241 | |
| 242 | target = debugger.GetSelectedTarget() |
| 243 | uint64_t_type = target.FindFirstType("uint64_t") |
| 244 | target = debugger.GetSelectedTarget() |
| 245 | |
| 246 | rip = target.CreateValueFromAddress("rip", lldb.SBAddress( |
| 247 | context.GetValueAsUnsigned() + 7*8, target), uint64_t_type).GetValueAsUnsigned() |
| 248 | rbp = target.CreateValueFromAddress("rbp", lldb.SBAddress( |
| 249 | context.GetValueAsUnsigned() + 6*8, target), uint64_t_type).GetValueAsUnsigned() |
| 250 | rsp = context.GetValueAsUnsigned() + 8*8 |
| 251 | |
| 252 | debugger.HandleCommand(f"register write rip {rip}") |
| 253 | debugger.HandleCommand(f"register write rbp {rbp}") |
| 254 | debugger.HandleCommand(f"register write rsp {rsp}") |
| 255 | |
| 256 | |
| 257 | def bthread_all(debugger, command, result, internal_dict): |
no test coverage detected