25.3.开启 DTrace 支持

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

  1. options KDTRACE_HOOKS
  2. options DDB_CTF
  3. makeoptions DEBUG=-g
  4. makeoptions WITH_CTF=1

AMD64 架构的用户还应添加:

  1. options KDTRACE_FRAME

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

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

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

提示:

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

DTrace Toolkit 包括许多使用 DTrace 专有的 D 语言编写的脚本。这种语言非常类似于 C++。对其进行深入探讨不属于本文的范围,这在 Illumos 动态追踪指南中有所涵盖。