strace
OS XにはLinuxがありませんが、Linuxのdtrace
方がはるかに優れていると思われます。
ただし、個々のコマンドで単純なトレースを実行する機能がありません。たとえば、Linuxでは、strace -f gcc hello.c
すべてのシステムコールをキャプチャするように記述できます。これにより、コンパイラがプログラムをコンパイルするために必要なすべてのファイル名のリストが表示されます(優れたメモ化スクリプトはこのトリックに基づいて構築されています)
Macにメモ化を移植したいので、なんらかのが必要ですstrace
。私が実際に必要としているのは、gcc
読み取りと書き込みを行うファイルのリストなので、必要なのはもっとですtruss
。案の定dtruss -f gcc hello.c
、ある程度同じ機能を取得できますが、コンパイラはルート権限で実行されます。これは明らかに望ましくありません(セキュリティ上の大きなリスクは別として、a.out
ファイルがルートによって所有されているという問題があります:-)
次に試してみdtruss -f sudo -u myusername gcc hello.c
ましたが、これは少し違和感があり、とにかく機能しません(a.out
この時点ではファイルがまったく取得されないので、理由はわかりません)
その長い話はすべて、私の最初の質問を動機付けようとしています。Linuxの場合と同じように、通常のユーザー権限でコマンドを実行するにはどうすればよいですか。dtrace
strace
編集:これを行う方法を疑問に思っているのは私だけではないようです:質問#1204256は私のものとほとんど同じです(そして同じ次善のsudo答えがあります:-)