DTrace使ってみた!
以下のエントリを参考にとりあえず動かしてみた。
とても分かりやすくて、すばらしい。
写経になってしまうのだが、以下の内容で test.d というファイルを作る。
pid$target:::entry, pid$target:::return { }
実行してみる。
dtrace -F -s test.d -c ls dtrace: failed to initialize dtrace: DTrace requires additional privileges
失敗した。元のエントリにはちゃんと書いてあるのだが、root権限が必要。
sudo dtrace -F -s test.d -c ls
ずらーって訳の分からない文字が流れていった…。
訳が分からないのでリダイレクトさせてみた。
sudo dtrace -F -s test.d -c ls > test.txt
エディタで開こうとしたら、HDがぶんぶん鳴りだした。
出来上がったtest.txtのサイズが42MBもある…。lessで最初のほうだけ見てみる。
Movies Music Pictures Public Sites test.d test.txt CPU FUNCTION 0 <- mach_msg_trap 0 <- mach_msg 0 <- report_activity 0 <- prepareDTraceRPC 0 <- ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) 0 -> ImageLoaderMachO::machHeader() const 0 <- ImageLoaderMachO::machHeader() const 0 -> dyld::notifySingle(dyld_image_states, mach_header const*, char const*, long) 0 <- dyld::notifySingle(dyld_image_states, mach_header const*, char const*, long) 0 <- ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int) 0 -> dyld::notifyBatch(dyld_image_states) 0 <- dyld::notifyBatch(dyld_image_states)
うん、訳が分からない。なんだこれ?
というわけで、DTraceに挫折した…。