Reland "[lldb] Implement basic support for reverse-continue" (#125242)

This reverts commit a774de807e.

This is the same changes as last time, plus:
* We load the binary into the target object so that on Windows, we can
resolve the locations of the functions.
* We now assert that each required breakpoint has at least 1 location,
to prevent an issue like that in the future.
* We are less strict about the unsupported error message, because it
prints "error: windows" on Windows instead of "error: gdb-remote".
This commit is contained in:
David Spickett
2025-01-31 15:56:33 +00:00
committed by GitHub
parent 0d63a3d757
commit 7e66cf74fb
40 changed files with 1402 additions and 47 deletions

View File

@@ -182,10 +182,15 @@ void ScriptedProcess::DidResume() {
m_pid = GetInterface().GetProcessID();
}
Status ScriptedProcess::DoResume() {
Status ScriptedProcess::DoResume(RunDirection direction) {
LLDB_LOGF(GetLog(LLDBLog::Process), "ScriptedProcess::%s resuming process", __FUNCTION__);
return GetInterface().Resume();
if (direction == RunDirection::eRunForward)
return GetInterface().Resume();
// FIXME: Pipe reverse continue through Scripted Processes
return Status::FromErrorStringWithFormatv(
"error: {0} does not support reverse execution of processes",
GetPluginName());
}
Status ScriptedProcess::DoAttach(const ProcessAttachInfo &attach_info) {