Mac OS XのDTrace

DTraceについてちょっと調べてたんだけど、いろいろ試したり、まとめたりする前に力尽きてしまったです。そしてそのまま更新も止まってました。
ちょっと気が向いたので、書けるだけは書いておこうかと。

DTraceに関する基本的な情報。
まずはマニュアル(man)。

man dtrace

でも出てくるけど、ウェブで見れると便利でもあるので書いておこう。

SunにあるSolaris10版のマニュアル 英語日本語訳

それとAppleにあるMac OS X版のマニュアル英語


その他にもSunにある情報。
Solaris 動的トレースガイド(Solaris Dynamic Tracing Guide)英語日本語訳
DTrace ユーザーガイド(DTrace User Guide)英語日本語訳
DTrace by Example: Solving a Real-World Problem英語なPDF
Sun Tech Days 2008 in Tokyoのセッション1-M-2


@ITの記事、OpenSolarisでサーバ構築の連載最終回。DTraceでトラブルシューティング

ITmedia記事


SolarisインターナルにあるwikiDTrace Topics

これがあると便利DTrace ToolkitSolaris用でOS Xではそのまま動かないかも。というか、OS Xには入っている。全部?最新?というのは確認していない。


OS X標準のRubyではDTraceが有効になっているけど、おそらくjoyentパッチそのもの。
なので、USDTプロバイダ。だから

MyMac:~ chcoopu$ sudo dtrace -l | grep ruby
MyMac:~ chcoopu$ 

と、単にdtraceコマンドを起動してプロバイダ一覧を表示してもそこにrubyは出てこない。
そうではなく、コマンドにrubyを指定すれば表示される。

MyMac:~ chcoopu$ sudo dtrace -l -c /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -v | grep ruby
21584    ruby662   libruby.1.dylib                          rb_call0 function-entry
21585    ruby662   libruby.1.dylib                          rb_call0 function-return
21586    ruby662   libruby.1.dylib                   garbage_collect gc-begin
21587    ruby662   libruby.1.dylib                   garbage_collect gc-end
21588    ruby662   libruby.1.dylib                           rb_eval line
21589    ruby662   libruby.1.dylib                      rb_obj_alloc object-create-done
21590    ruby662   libruby.1.dylib                      rb_obj_alloc object-create-start
21591    ruby662   libruby.1.dylib                   garbage_collect object-free
21592    ruby662   libruby.1.dylib                        rb_longjmp raise
21593    ruby662   libruby.1.dylib                           rb_eval rescue
21594    ruby662   libruby.1.dylib                 ruby_dtrace_probe ruby-probe
MyMac:~ chcoopu$ 


RubyをDTrace有効にするためのjoyentパッチをOS X対応させたもの舞波さんがまとめたもの、recompile.netの人が作った資料


といったくらいが調べたこと。