Re: ptrace PT_CONTINUE
Re: ptrace PT_CONTINUE
- Subject: Re: ptrace PT_CONTINUE
- From: Thierry bultel <email@hidden>
- Date: Thu, 09 Jul 2009 10:04:02 +0200
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
|
begin:vcard
fn:Thierry Bultel
n:Bultel;Thierry
org:Atempo SA;V.O.S team
adr;dom:;;+33297683688
email;internet:email@hidden
title:Software engineer
tel;work:+33297683688
note;quoted-printable:=0D=0A=
=0D=0A=
version:2.1
end:vcard
_______________________________________________
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