Solaris 动态跟踪指南

声明探测器

使用 <sys/sdt.h> 中的 DTRACE_PROBEDTRACE_PROBE1DTRACE_PROBE2DTRACE_PROBE3DTRACE_PROBE4 宏声明 SDT 探测器。基于 SDT 探测器的模块名称和函数名称对应于探测器的内核模块和函数。探测器的名称取决于 DTRACE_PROBEn 宏中指定的名称。如果名称中不包含两个连续下条 (__),则探测器的名称与宏中指定的名称相同。如果名称中包含任何两个连续下条,则探测器名称会将该连续下条转换为一个破折号 (-)。例如,如果 DTRACE_PROBE 宏指定 transaction__start,则 SDT 探测器将被命名为 transaction-start。此替代允许 C 代码提供不是有效 C 标识符的宏名称,无需指定字符串。

DTrace 将内核模块名称和函数名称作为用于标识探测器的元组的一部分,因此无需在探测器名称中包括这些信息,以避免名称空间冲突。可以对驱动程序 module 使用命令 dtrace -l -P sdt -m module 来列出已安装的探测器和 DTrace 用户将可以看到的全名。