[lldb] Improve breakpoint management for interactive scripted process

This patch improves breakpoint management when doing interactive
scripted process debugging.

In other to know which process set a breakpoint, we need to do some book
keeping on the multiplexer scripted process. When initializing the
multiplexer, we will first copy breakpoints that are already set on the
driving target.

Everytime we launch or resume, we should copy breakpoints from the
multiplexer to the driving process.

When creating a breakpoint from a child process, it needs to be set both
on the multiplexer and on the driving process. We also tag the created
breakpoint with the name and pid of the originator process.

This patch also implements all the requirement to achieve proper
breakpoint management. That involves:

- Adding python interator for breakpoints and watchpoints in SBTarget
- Add a new `ScriptedProcess.create_breakpoint` python method

Differential Revision: https://reviews.llvm.org/D148548

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
Med Ismail Bennani
2023-04-25 15:03:15 -07:00
parent 6cf668016e
commit e31d0c20e4
16 changed files with 242 additions and 4 deletions

View File

@@ -260,7 +260,10 @@ Status ScriptedProcess::EnableBreakpointSite(BreakpointSite *bp_site) {
return Status("Scripted Processes don't support hardware breakpoints");
}
return EnableSoftwareBreakpoint(bp_site);
Status error;
GetInterface().CreateBreakpoint(bp_site->GetLoadAddress(), error);
return error;
}
ArchSpec ScriptedProcess::GetArchitecture() {