|
@@ -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.
|