Skip site navigation (1)Skip section navigation (2)
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>