Mac OS XのDTrace
DTraceについてちょっと調べてたんだけど、いろいろ試したり、まとめたりする前に力尽きてしまったです。そしてそのまま更新も止まってました。
ちょっと気が向いたので、書けるだけは書いておこうかと。
DTraceに関する基本的な情報。
まずはマニュアル(man)。
man dtrace
でも出てくるけど、ウェブで見れると便利でもあるので書いておこう。
SunにあるSolaris10版のマニュアル 英語と日本語訳
その他にも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でトラブルシューティング
SolarisインターナルにあるwikiのDTrace Topics
これがあると便利DTrace Toolkit。Solaris用で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の人が作った資料
といったくらいが調べたこと。