26.2 实现上的差异

  虽然 FreeBSD 上的 DTrace 与 Solaris™ 上的非常相似, 在继续深入之前我们需要说明一下存在的差异。 用户首先会注意到的便是 FreeBSD 上的 DTrace 需要明确地被启用。 DTrace 相关的内核选项和模块必须开启后才能正常工作。 稍后我们会作详细介绍。

  有一个 DDB_CTF 内核选项用来开启从内核与内核模块加载 CTF 数据。 CTFSolaris Compact C Type Format 封装了类似于 DWARF 和 venerable stabs 简化的调试信息。CTF 数据是由 ctfconvertctfmerge 工具加入二进制文件的。ctfconvert 工具分析由编译器生成的 DWARF ELF 调试 section, ctfmerge 合并目标文件的 CTF ELF section 到可执行文件或共享库。更多关于在启用 FreeBSD 内核上启用此项的详细内容即将完成。

  比起 Solaris, FreeBSD 有几个不同提供器。 最值得注意的是 dtmalloc 提供器, 可以让你根据类型追踪 FreeBSD 内核中的 malloc()

  只有 root 可以使用 FreeBSD 上的 DTrace。 这是由系统安全上的差异造成的,Solaris 提供了一些 FreeBSD 上还未实现的低层的安全检查。 同样, /dev/dtrace/dtrace 也被严格的限制为仅供 root 用户访问。

  最后,DTrace 为 SunCDDL 许可下发布的软件。随 FreeBSD 发行的 Common Development and Distribution License 可以在查阅 /usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE 或者通过 http://www.opensolaris.org/os/licensing 查看在线版本。

  这个许可表示带有 DTrace 选项的 FreeBSD 内核仍为 BSD 许可; 然而, 以二进制发布模块, 或者加载二进制模块则需遵守 CDDL

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.