MacOSXでstraceが欲しいけどdtrace意味わからん→dtruss使おう

  • 18
    いいね
  • 0
    コメント

Linux環境でstraceを使ったことがあるとMacOSXでも同じことがしたくなりますよね。

とはいえ、MacOSXだとdtraceコマンドってのがあるらしいけど、オプション指定も複雑怪奇で意味わかんない、システムコールだけ気軽に見たいって人も多いのではないでしょうか。

そんなときはdtrussコマンドを使いましょう。このコマンドはdtraceと同じ仕組みでシステムコールだけ見せてくれます。

straceと違って、自分がownerのプロセスであってもroot権限が必要なことに注意してください。

$ sudo dtruss -p 452
Password:
(以下システムコールの羅列)

manpageを見るとtruss(SysV系のコマンドなんすかね…?)のDTrace版だよ、なんてことが書いてあったりして、オプションはstraceと違ったりもします。とはいえdtraceコマンドを調べながら使うよりは断然楽なのでオススメです。

dtruss経由でコマンド起動したい

dtrussはroot権限を要求するのですが、sudo dtruss <command>などとすると挙動が変わって不便だったりします。次のようにすればコマンド自体は元のユーザー権限で動かしつつdtrussすることが可能です。

$ sudo dtruss -f sudo -u $(id -u -n) <command>