有时,我们需要使用DTrace
追踪程序的链接库的函数,这时module
名字就应该是链接库的名字。什么样的名字是有效的呢?让我做个实验验证一下。
我的程序链接了MySQL
的client
库,执行下面这些命令:
bash-3.2# dtrace -n 'pid$target::mysql_real[......]
有时,我们需要使用DTrace
追踪程序的链接库的函数,这时module
名字就应该是链接库的名字。什么样的名字是有效的呢?让我做个实验验证一下。
我的程序链接了MySQL
的client
库,执行下面这些命令:
bash-3.2# dtrace -n 'pid$target::mysql_real[......]
使用DTrace
运行不带参数的命令很简单。假设程序名字叫“a
”,执行这个命令即可:“dtrace -n 'pid$target::sigaction:entry' -c ./a
”。如果程序需要参数(假设为“-x
”),如何运行呢?
试着执行如下命令:
bash-3.2# dtrace -n '[......]
在DTrace
中,profile provider
是一种特殊的provider
,这个provider
提供的probe
起到一种类似定时器的作用。它可以根据用户设置的频率周期性地触发,这样用户就可以定期地采集感兴趣的数据,汇总以后作分析。
Profile provider
提供两种probe
:profi[......]
十一期间,在DTrace
邮件讨论组里,FreeBSD
的贡献者Mark Johnston
提出了一个issue
:因为有些DTrace
的关键字不是c/c++
的关键字,所以如果DTrace
脚本和命令分析的code
里包含这些关键字,执行就会出错。他举了个例子:FreeBSD
的g_consumer
结构体里包含了[……]