> For the complete documentation index, see [llms.txt](https://handbook.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://handbook.bsdcn.org/di-28-zhang-dtrace/28.3.-kai-qi-dtrace-zhi-chi.md).

# 28.3.开启 DTrace 支持

在 FreeBSD 9.2 和 10.0 中，DTrace 支持已内置于 **GENERIC** 内核中。使用较老版本的 FreeBSD 或希望将 DTrace 支持静态编译进内核的用户，应在定制内核配置文件中添加以下行，并按照 [配置 FreeBSD 内核](/di-10-zhang-pei-zhi-freebsd-nei-he/10.1.-gai-shu.md) 中的说明重新编译内核：

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

AMD64 架构的用户还应添加以下行：

```sh
options         KDTRACE_FRAME
```

此选项提供 [dtrace\_fbt(4)](https://man.freebsd.org/cgi/man.cgi?query=dtrace_fbt\&sektion=4\&format=html) 支持。虽然没有该选项 DTrace 仍可工作，但函数边界跟踪功能将受限。

当 FreeBSD 系统重启进入新内核，或使用 `kldload dtraceall` 加载 DTrace 内核模块后，可安装当前的 DTrace 工具包 ([sysutils/dtrace-toolkit](https://cgit.freebsd.org/ports/tree/sysutils/dtrace-toolkit/))，该工具包包含用于收集系统信息的现成脚本，包括检查打开的文件、内存、CPU 使用情况等。FreeBSD 基本系统中也包含一些脚本，存放于 **/usr/share/dtrace**。

> **注意**
>
> **/usr/share/dtrace** 中的脚本是专门为 FreeBSD 移植的。DTrace 工具包中的脚本并非全部可直接在 FreeBSD 上运行，有些脚本需要做一些修改才能使用。

DTrace 工具包包含许多用 DTrace 特有语言编写的脚本，这种语言称为 D 语言，与 C++ 非常相似。本文档不对 D 语言做深入讲解。如需概览，请参阅 FreeBSD 的 [d(7)](https://man.freebsd.org/cgi/man.cgi?query=d\&sektion=7\&format=html) 手册页。D 语言在 [illumos 动态跟踪指南](https://www.illumos.org/books/dtrace/bookinfo.html) 中也有详细介绍。
