Date: Mon, 17 May 2010 12:28:49 -0700 (PDT) From: Fernando Gleiser <fergleiser@yahoo.com> To: Dan McNulty <dkmcnulty@gmail.com>, freebsd-hackers@freebsd.org Subject: Re: Efficient way to determine when a child process forks or calls exec Message-ID: <167913.27782.qm@web31706.mail.mud.yahoo.com> In-Reply-To: <AANLkTinO0hqywG7sCWJYXTsayOtad2qnP1SPDn6NzCYm@mail.gmail.com> References: <AANLkTinO0hqywG7sCWJYXTsayOtad2qnP1SPDn6NzCYm@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message ----
> From: Dan McNulty <dkmcnulty@gmail.com>
> To: freebsd-hackers@freebsd.org
> Sent: Mon, May 17, 2010 11:33:31 AM
> Subject: Efficient way to determine when a child process forks or calls exec
>
> Hi all,
>I have been experimenting with ptrace to determine when a
> child process forks or calls exec. Particularly, I have explored
> tracing every system call entry and exit similar to what the truss
> utility does, and for my case, the performance impact of tracing every
> system call is too great.
> Is there a more efficient way than tracing
> every system call entry and exit to determine when a child process forks,
> calls exec, or creates a new LWP?
You can do that very easily with DTrace's syscall provider
#!/usr/sbin/dtrace -s
syscall::fork:entry
{
self->traceme=1;
}
syscall::exec*:entry
/self->traceme/
{
printf("pid %d has called %s\n", pid, probefunc);
self->traceme=0;
}
Hope that helps
}
Thanks a lot for your
> help!
-Dan
_______________________________________________
> ymailto="mailto:freebsd-hackers@freebsd.org"
> href="mailto:freebsd-hackers@freebsd.org">freebsd-hackers@freebsd.org
> mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To
> unsubscribe, send any mail to "
> ymailto="mailto:freebsd-hackers-unsubscribe@freebsd.org"
> href="mailto:freebsd-hackers-unsubscribe@freebsd.org">freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?167913.27782.qm>
