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>