DTrace是令人印象深刻的强大的跟踪系统,最初来自 Solaris,但它被移植到 FreeBSD 和 Mac OSX。
DTrace 使用称为 D 的高级语言,与 AWK 或 C 不同。下面是一个示例:
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 函数,以便在跟踪本身期间对该跟踪数据执行高级操作。