Re: ptrace PT_CONTINUE
Re: ptrace PT_CONTINUE
- Subject: Re: ptrace PT_CONTINUE
- From: Terry Lambert <email@hidden>
- Date: Thu, 9 Jul 2009 16:19:39 -0700
The parent exiting should detach the child process, which should be
the same as quitting the debugger.
If this is not the case, please file a bug.
-- Terry
On Jul 9, 2009, at 1:04 AM, Thierry bultel wrote:
Hi Aron,
I think I understand what happens here.
Your code actually works, and temporaty resumes the child.
But as the parent immediately exits after, it dies, and causes the
child death as well.
The fix is to simply add that portion of code:
for (;;) {
sleep (1);
printf("parent alive\n");
}
after your call to ptrace(PT_CONTINUE )
As a rule, a ptrace based debugger is normally an infinite loop of
wait calls ...
Hope this helps,
Thierry
Aron-Zvi a écrit :
Hey guys,
I'm trying to get started with basic ptrace functionality with the
following:
#include <sys/types.h>
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char **argv)
{
int pid, status, ret;
if((pid = fork()) == 0)
{
ptrace(PT_TRACE_ME,0,0,0);
execl(argv[1],argv[1],0);
printf("exec failed\n");
}
else{
wait(&status);
if(WIFSTOPPED(status))
printf("child has stopped. child pid: %d\n", pid);
errno = 0;
ret = ptrace(PT_CONTINUE, pid, (caddr_t)1, 0);
printf("ret: %d\n", ret);
printf("errno: %s\n", strerror(errno));
}
}
>From my basic understanding, what the above should do is fork a
child process which will stop at exec and cause the parent-tracing
process to exit wait(). The parent process should then have the
child process continue execution normally by calling ptrace() with
PT_CONTINUE.
When I run the code, The child process is created, however,
ptrace() with PT_CONTINUE seems to fail as the child process does
not continue normal execution. ptrace's return value is 0 and errno
is "Unknown error: 0".
Running output:
aronzvis-macbook:ptrace_test aronzvi$ ./ptrace ../voidinc
child has stopped. child pid: 37959
ret: 0
errno: Unknown error: 0
I'm running OS X 10.5.7 and building the code with the 10.5 SDK.
Your help is much appreciated,
Aron-Zvi
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
<thierry_bultel.vcf> _______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden