DTraceは印象的で強力なトレース システムであり、元々は Solaris からのものですが、FreeBSD と Mac OSX に移植されています。
DTrace は、AWK や C とは異なり、D と呼ばれる高級言語を使用します。次に例を示します。
io:::start
/pid == $1/
{
printf("file %s offset %d size %d block %llu\n", args[2]->fi_pathname,
args[2]->fi_offset, args[0]->b_bcount, args[0]->b_blkno);
}
コマンド ラインを使用するsudo dtrace -q -s <name>.d <pid>
と、そのプロセスから発生したすべての IO がログに記録されます。
私の質問は、DTrace スクリプトからカスタム C 関数を呼び出して、トレース中にそのトレース データで高度な操作を行うことができるかどうか、およびその方法です。