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>