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に挫折した…。