1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 02:57:42 +00:00

LibDebug: Add optional setup_child() callback to debugger

If set, this callback gets called right after fork() in the child
process.

It can be used by the caller if it wants to perform some logic in the
child process before it starts executing the debuggee program.
This commit is contained in:
Itamar 2021-12-20 22:37:19 +02:00 committed by Brian Gianforcaro
parent 0cea8d1310
commit a02d8e5710
2 changed files with 13 additions and 2 deletions

View file

@ -53,7 +53,9 @@ void DebugSession::for_each_loaded_library(Function<IterationDecision(LoadedLibr
}
}
OwnPtr<DebugSession> DebugSession::exec_and_attach(String const& command, String source_root)
OwnPtr<DebugSession> DebugSession::exec_and_attach(String const& command,
String source_root,
Function<ErrorOr<void>()> setup_child)
{
auto pid = fork();
@ -63,6 +65,14 @@ OwnPtr<DebugSession> DebugSession::exec_and_attach(String const& command, String
}
if (!pid) {
if (setup_child) {
if (setup_child().is_error()) {
perror("DebugSession::setup_child");
exit(1);
}
}
if (ptrace(PT_TRACE_ME, 0, 0, 0) < 0) {
perror("PT_TRACE_ME");
exit(1);