跳过导航链接 | |
退出打印视图 | |
DTrace 用户指南 Oracle Solaris 10 8/11 Information Library (简体中文) |
DTrace 工具包含下列各组件:
用户级使用者程序,例如 dtrace
提供器,打包为内核模块,提供探测器来收集跟踪数据
一个库接口,使用者程序使用该接口通过 dtrace(7D) 内核驱动程序访问 DTrace 工具
提供器提供了用于检测系统的一种方法。提供器使得探测器可供 DTrace 框架使用。DTrace 向提供器发送有关探测器启用时间的信息。当某个已启用的探测器被触发时,提供器会将控制权移交给 DTrace。
提供器打包为一组内核模块。每个模块执行一种特定类型的检测来创建探测器。使用 DTrace 时,每个提供器都可以将其可提供的探测器发布到 DTrace 框架。可以启用跟踪操作并将其绑定到任意一个已经发布的探测器上。
某些提供器能够根据用户的跟踪请求新建探测器。
探测器具有下列各项属性:
由提供器启用
可标识自己所检测的模块和函数
具有名称
上述四项属性为每个探测器定义了一个可作为其唯一标识符的 4 元组,其格式为提供器:模块:函数:名称。每个探测器还具有一个唯一的整数标识符。
谓词是括在斜杠 / / 内的表达式。探测器被触发时,将对谓词进行评估以确定是否应执行关联的操作。谓词是用于在 D 程序中生成更为复杂的控制流的主要条件结构。对于任意一个探测器,可以完全省略探测器的谓词部分。如果省略了谓词部分,则在触发探测器时将始终执行相应的操作。
谓词表达式可以使用前面所述的任何 D 运算符。谓词表达式会引用 D 数据对象,例如变量和常量。谓词表达式的计算结果必须是一个整数或指针类型的值。与所有 D 表达式一样,零值将解释为 false,任何非零值将解释为 true。
操作是 DTrace 虚拟机在内核中执行的可由用户编程的语句。操作具有以下特性:
操作在探测器触发时执行
操作是完全可以用 D 脚本语言进行编写的
大多数操作都会记录一个指定的系统状态
操作可以根据所描述方式精确更改系统的状态。这类操作称为破坏性操作。缺省情况下不允许执行破坏性操作。
许多操作都使用以 D 脚本语言编写的表达式
对于简单函数,您可以直接从命令行使用 dtrace 命令来调用 DTrace 框架。要使用 DTrace 执行较为复杂的函数,请使用 D 脚本语言编写脚本。可以使用 -s 选项加载指定的脚本以供 DTrace 使用。有关如何使用 D 脚本语言的信息,请参见第 3 章。