查看源代码 DTrace 和 Erlang/OTP
历史
Erlang 虚拟机 DTrace 探针的第一个实现是在 2008 年 Erlang 用户大会上提出的。该工作基于 Erlang/OTP R12 版本,由于与原始开发人员之间的沟通失误而中止。
一些用户创建了 Erlang 端口驱动程序、链接驱动程序或 NIF,允许 Erlang 代码尝试激活探针,例如 foo_module:dtrace_probe("message goes here!")
。
目标
- 尽可能多地注释 Erlang 虚拟机。
- 最初的目标是跟踪文件 I/O 操作。
- 支持所有实现 DTrace 的平台:OS X、Solaris 以及(我希望)FreeBSD 和 NetBSD。
- 在实际可行的范围内,通过 DTrace 提供程序兼容性支持 Linux 上的 SystemTap。
- 允许 Erlang 代码提供注释。
支持的平台
- OS X 10.6.x / Snow Leopard,OS X 10.7.x / Lion 以及可能更新的版本。
- Solaris 10。我在 Solaris 11 和 OpenIndiana release 151a 上进行了有限的测试,两者似乎都可以工作。
- FreeBSD 9.0 和 10.0。
- 通过 SystemTap 兼容性支持 Linux。有关更多详细信息,请参阅 $ERL_TOP/HOWTO/SYSTEMTAP.md。
在运行 configure
脚本时,只需将 --with-dynamic-trace=dtrace
选项添加到您的命令中。如果您正在使用 systemtap,则配置选项是 --with-dynamic-trace=systemtap
状态
截至 R15B01,动态跟踪代码已包含在 OTP 源代码发行版中,尽管它被认为是实验性的。dtrace 代码的主要开发仍然发生在 Ericsson 之外,但无需获取 OTP 源代码的修补版本即可获得基本功能。
DTrace 探针规范
探针规范可以在 erts/emulator/beam/erlang_dtrace.d
中找到,一些示例脚本可以在 lib/runtime_tools/examples/
下找到。