web-dev-qa-db-ja.com

Mac OS Xでプログラムのシステムコールをトレースする方法

findコマンドによって行われたシステムコールをトレースしたかった いくつかのパフォーマンスの問題をデバッグするために しかし、どうすればMac OS X Yosemiteでこれを行います。 FreeBSDでstraceが行うのと同様に、任意のプログラムのシステムコールをトレースするにはどうすればよいですか?特に、ファイルシステム関連の呼び出しのトレースに興味があります。

次のようにdtrussを使用できます

Sudo dtruss find ~/repo -depth 2 -type d -name '.git'

このユーティリティの マニュアルページ は、ツールの使用をニーズに合わせて調整するのに役立ちます。

27
jspcal

MacOSの現在のバージョンでは、SIP(/usr/bin)はトレースできません。

これを回避するには、実行可能ファイルのコピーをホームディレクトリに作成し、コピーをトレースします。

cp /usr/bin/find find
Sudo dtruss ./find …
28
duskwuff