有时,我们需要使用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 '[......]
如果想知道一个probe
参数的具体信息,可以使用“-v
”参数获取。如下例所示:
bash-3.2# dtrace -lvn fbt::recv:entry
ID PROVIDER MODULE FUNCTION[......]
通常使用“dtrace -l
”命令会列出所有的probe。如果只想列举某一个provider所有的probe,可以使用“dtrace -P provider -l
”(注意P是大写字母)。举个例子,如果想列出“io
”provider的所有probe:
bash-3.2# dtrace -P io[......]