檢視原始碼 DTrace 與 Erlang/OTP
歷史
Erlang 虛擬機的 DTrace 探針的首次實作是在 2008 年 Erlang 使用者大會上提出的。該項基於 Erlang/OTP R12 版本的成果,由於與原始開發人員之間的溝通似乎有誤,而中止了。
一些使用者建立了 Erlang 埠驅動程式、連結式驅動程式或 NIF,允許 Erlang 程式碼嘗試啟動探針,例如 foo_module:dtrace_probe("message goes here!")
。
目標
- 儘可能地註解 Erlang VM 的大部分部分。
- 最初的目標是追蹤檔案 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 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/
下找到。