27.3.开启 DTrace 支持 ===================== 在 FreeBSD 9.2 和 10.0 中,对 DTrace 的支持被内置于 **GENERIC** 内核中。使用早先版本或是希望静态编译 DTrace 支持的用户应当在定制内核配置文件中添加如下内容,并按照\ `配置 FreeBSD 内核 `__\ 中的指导重新编译内核: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session options KDTRACE_HOOKS options DDB_CTF makeoptions DEBUG=-g makeoptions WITH_CTF=1 使用 AMD64 架构的用户还应添加: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session 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 动态跟踪指南 `__\ 中有所说明。