summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Libraries/LibDebug/DebugSession.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/Libraries/LibDebug/DebugSession.cpp b/Libraries/LibDebug/DebugSession.cpp
index f6e82e140c..194ea09a9c 100644
--- a/Libraries/LibDebug/DebugSession.cpp
+++ b/Libraries/LibDebug/DebugSession.cpp
@@ -64,6 +64,11 @@ OwnPtr<DebugSession> DebugSession::exec_and_attach(const String& command)
{
int pid = fork();
+ if (pid < 0) {
+ perror("fork");
+ exit(1);
+ }
+
if (!pid) {
if (ptrace(PT_TRACE_ME, 0, 0, 0) < 0) {
perror("PT_TRACE_ME");
@@ -93,16 +98,6 @@ OwnPtr<DebugSession> DebugSession::exec_and_attach(const String& command)
return nullptr;
}
- if (waitpid(pid, nullptr, WSTOPPED) != pid) {
- perror("waitpid");
- return nullptr;
- }
-
- if (ptrace(PT_CONTINUE, pid, 0, 0) < 0) {
- perror("continue");
- return nullptr;
- }
-
// We want to continue until the exit from the 'execve' sycsall.
// This ensures that when we start debugging the process
// it executes the target image, and not the forked image of the tracing process.