dtrace in PHP on OSX (yes you CAN do it :P)
Take one script:
<?php
function blastoff()
{
echo "Blastoff!\n\n";
}
function one()
{
echo "One...\n";
blastoff();
}
function two()
{
echo "Two...\n";
one();
}
function three()
{
echo "Three...\n";
two();
}
function launch()
{
three();
}
while (1)
{
launch();
sleep(1);
}
?>
Run it in a terminal - open up another... and...
Macintosh:dtrace-1.0.3+fix lpackham$ uname -a
Darwin Macintosh.local 9.0.0 Darwin Kernel Version 9.0.0: Tue Oct 9 21:35:55 PDT 2007; root:xnu-1228~1/RELEASE_I386 i386 i386
Macintosh:dtrace-1.0.3+fix lpackham$ dtrace -n function-entry'{printf("called %s() in %s at line %d\n", copyinstr(arg0), copyinstr(arg1), arg2)}' -q
dtrace: failed to initialize dtrace: DTrace requires additional privileges
Macintosh:dtrace-1.0.3+fix lpackham$ sudo dtrace -n function-entry'{printf("called %s() in %s at line %d\n", copyinstr(arg0), copyinstr(arg1), arg2)}' -q
Password:
called () in /Users/lpackham/blastoff.php at line 0
called launch() in /Users/lpackham/blastoff.php at line 32
called three() in /Users/lpackham/blastoff.php at line 27
called two() in /Users/lpackham/blastoff.php at line 22
called one() in /Users/lpackham/blastoff.php at line 16
called blastoff() in /Users/lpackham/blastoff.php at line 10
called sleep() in /Users/lpackham/blastoff.php at line 33
called launch() in /Users/lpackham/blastoff.php at line 32
called three() in /Users/lpackham/blastoff.php at line 27
called two() in /Users/lpackham/blastoff.php at line 22
called one() in /Users/lpackham/blastoff.php at line 16
called blastoff() in /Users/lpackham/blastoff.php at line 10
called sleep() in /Users/lpackham/blastoff.php at line 33
called launch() in /Users/lpackham/blastoff.php at line 32
called three() in /Users/lpackham/blastoff.php at line 27
called two() in /Users/lpackham/blastoff.php at line 22
called one() in /Users/lpackham/blastoff.php at line 16
called blastoff() in /Users/lpackham/blastoff.php at line 10
called sleep() in /Users/lpackham/blastoff.php at line 33
called launch() in /Users/lpackham/blastoff.php at line 32
called three() in /Users/lpackham/blastoff.php at line 27
called two() in /Users/lpackham/blastoff.php at line 22
called one() in /Users/lpackham/blastoff.php at line 16
called blastoff() in /Users/lpackham/blastoff.php at line 10
called sleep() in /Users/lpackham/blastoff.php at line 33
called launch() in /Users/lpackham/blastoff.php at line 32
called three() in /Users/lpackham/blastoff.php at line 27
called two() in /Users/lpackham/blastoff.php at line 22
called one() in /Users/lpackham/blastoff.php at line 16
called blastoff() in /Users/lpackham/blastoff.php at line 10
called sleep() in /Users/lpackham/blastoff.php at line 33