27.3.开启 DTrace 支持

在 FreeBSD 9.2 和 10.0 中,对 DTrace 的支持被内置于 GENERIC 内核中。使用早先版本或是希望静态编译 DTrace 支持的用户应当在定制内核配置文件中添加如下内容,并按照配置 FreeBSD 内核中的指导重新编译内核:

options         KDTRACE_HOOKS
options         DDB_CTF
makeoptions DEBUG=-g
makeoptions WITH_CTF=1

使用 AMD64 架构的用户还应添加:

options         KDTRACE_FRAME

这个选项提供了 FBT 支持。虽然 DTrace 在没有这个选项的时候也能够工作,但是对函数边界测试时的支持将会受限。

FreeBSD 系统重启进入新的内核后,或是通过 kldload dtraceall 加载了 DTrace 内核模块后,系统将会需要 ksh,因为 DTrace Toolkit 中有几个工具是通过 ksh 编写的。请确保你通过软件包或 port 安装了 shells/ksh93。你也可以在 shells/pdksh 或者 shells/mksh 上运行这些工具。

最后,安装当前版本的 DTrace Toolkit,这是一些收集系统信息的脚本。其中包括检查打开文件、内存、CPU 使用率等脚本。FreeBSD 10 在 /usr/share/dtrace 下已经安装了其中几个脚本。在其他版本的 FreeBSD 中,或者要安装完整的 DTrace Toolkit,请安装通过软件包或 port sysutils/dtrace-toolkit

注意

/usr/share/dtrace 下的脚本是专门用于 FreeBSD 的。并非所有包括在 DTrace Toolkit 中的脚本都能在 FreeBSD 上如期工作,一些脚本可能需要额外的修改。

DTrace Toolkit 包含了许多用 DTrace 专有的 D 语言编写的脚本。这种语言非常接近 C++。对其进行深入的探讨不属于本文的范围,这在 Illumos 动态跟踪指南中有所说明。