Solaris 动态跟踪指南

外部符号和类型

DTrace 检测过程在 Solaris 操作系统内核内部执行,因此除了访问特殊 DTrace 变量和探测器参数外,您还可以访问内核数据结构、符号和类型。通过这些功能,高级 DTrace 用户、管理员、服务人员和驱动程序开发者可以检查操作系统内核和设备驱动程序的低级行为。在本书开头的阅读列表中,列出了可以帮助您进一步了解 Solaris 操作系统内核的书籍。

D 使用反引号字符 (`) 作为访问操作系统(而非 D 程序)中所定义的符号的特殊作用域运算符。例如,Solaris 内核包含一个名为 kmem_flags 的系统可调参数的 C 声明,用于启用内存分配器调试功能。有关 kmem_flags 的更多信息,请参见《Solaris Tunable Parameters Reference Manual》。此可调参数在内核源代码中使用 C 语言声明,如下所示:

int kmem_flags;

要在 D 程序中跟踪此变量的值,可以编写以下 D 语句:

trace(`kmem_flags);

DTrace 将每个内核符号与在对应操作系统 C 代码中用于该符号的类型关联,从而便于对本机操作系统数据结构进行基于源代码的访问。内核符号名称存储在与 D 变量和函数标识符不同的名称空间中,因此您无需担心这些名称会与 D 变量发生冲突。

至此,您已完成了 DTrace 旋风之旅,并了解了许多对于生成更大、更复杂的 D 程序所必需的基本 DTrace 生成块。在以下章节中,将描述用于 D 程序的整套规则,并演示 DTrace 如何使复杂的系统性能度量和功能分析变得更简单。随后,您将会了解到如何使用 DTrace 将用户应用程序行为与系统行为相连,从而使您可以分析整个软件栈。

这才刚刚开始!