24.2. 实现上的差异

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

# kldload dtraceall

从 FreeBSD 10.0-RELEASE 起,当dtrace执行时内核模块会自动加载。

FreeBSD 使用DDB_CTF内核选项来开启从内核模块和内核加载CTF数据的支持。CTFSolaris™ Compact C Type Format 封装了类似于 DWARF 和 venerable stabs 简化的调试信息。CTF 数据是由 ctfconvertctfmerge 工具加入二进制文件的。ctfconvert 工具分析由编译器生成的 DWARF ELF 调试 section, ctfmerge 合并目标文件的 CTF ELF section 到可执行文件或共享库。

Solaris™不同,FreeBSD 存在一些不同的提供器。最值得注意的是dtmalloc提供程序,它允许在 FreeBSD 内核中按类型跟踪malloc()Solaris™中发现的一些提供器,如cpcmib,不能在 FreeBSD 下使用。这些可能会出现在 FreeBSD 的未来版本中。此外,在两个系统都可用的提供器可能会有一些参数不同,因为它们的探测器具有不同的参数类型。因此,为Solaris™编写的D脚本可能不能在 FreeBSD上直接使用,也可能不工作,反之亦然。

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

DTrace属于共同开发和分发许可证 (CDDL) 许可证.要查看 FreeBSD 上的此许可证,请参阅/usr/src/cddl/contrib/opensolaris/OPENSOLARIS。在http://opensource.org/licenses/CDDL-1.0在线观看或在线查看。当具有 DTrace 支持的 FreeBSD 内核获得BSD许可时,当模块以二进制形式分发或加载二进制文件时,将使用CDDL

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

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

关于本文档的问题请发信联系 <doc@FreeBSD.org>.