LibDebug: Add ability to detach from debuggee

This commit is contained in:
Itamar 2020-09-26 11:22:58 +03:00 committed by Andreas Kling
parent 6c73fdf8d1
commit 8ce641cefc
Notes: sideshowbarker 2024-07-19 02:12:55 +09:00
2 changed files with 17 additions and 2 deletions

View file

@ -266,4 +266,12 @@ void* DebugSession::single_step()
return (void*)regs.eip;
}
void DebugSession::detach()
{
for (auto& breakpoint : m_breakpoints.keys()) {
remove_breakpoint(breakpoint);
}
continue_debugee();
}
}

View file

@ -90,11 +90,14 @@ public:
};
void continue_debugee(ContinueType type = ContinueType::FreeRun);
//returns the wstatus result of waitpid()
// Returns the wstatus result of waitpid()
int continue_debugee_and_wait(ContinueType type = ContinueType::FreeRun);
// Returns the new eip
void* single_step();
void detach();
template<typename Callback>
void run(Callback callback);
@ -236,7 +239,11 @@ void DebugSession::run(Callback callback)
state = State::SingleStep;
}
if (decision == DebugDecision::Kill || decision == DebugDecision::Detach) {
if (decision == DebugDecision::Detach) {
detach();
break;
}
if (decision == DebugDecision::Kill) {
ASSERT_NOT_REACHED(); // TODO: implement
}