檢視原始碼 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/ 下找到。