mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 11:15:08 +00:00
LibDebug: Add ability to detach from debuggee
This commit is contained in:
parent
6c73fdf8d1
commit
8ce641cefc
2 changed files with 17 additions and 2 deletions
|
@ -266,4 +266,12 @@ void* DebugSession::single_step()
|
||||||
return (void*)regs.eip;
|
return (void*)regs.eip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebugSession::detach()
|
||||||
|
{
|
||||||
|
for (auto& breakpoint : m_breakpoints.keys()) {
|
||||||
|
remove_breakpoint(breakpoint);
|
||||||
|
}
|
||||||
|
continue_debugee();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,11 +90,14 @@ public:
|
||||||
};
|
};
|
||||||
void continue_debugee(ContinueType type = ContinueType::FreeRun);
|
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);
|
int continue_debugee_and_wait(ContinueType type = ContinueType::FreeRun);
|
||||||
|
|
||||||
|
// Returns the new eip
|
||||||
void* single_step();
|
void* single_step();
|
||||||
|
|
||||||
|
void detach();
|
||||||
|
|
||||||
template<typename Callback>
|
template<typename Callback>
|
||||||
void run(Callback callback);
|
void run(Callback callback);
|
||||||
|
|
||||||
|
@ -236,7 +239,11 @@ void DebugSession::run(Callback callback)
|
||||||
state = State::SingleStep;
|
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
|
ASSERT_NOT_REACHED(); // TODO: implement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue