Mac OS X でプログラムのシステムコールをトレースするにはどうすればいいですか? 質問する

Mac OS X でプログラムのシステムコールをトレースするにはどうすればいいですか? 質問する

私は、探す指示パフォーマンスの問題をデバッグするためしかし、Mac OS X Yosemiteでこれを行う方法がわかりませんでした。ストレースFreeBSD ではどうでしょうか? 特にファイルシステム関連の呼び出しのトレースに興味があります。


提案受け入れられた回答私にはうまくいきません。私が試したのはこれです:

cd ~
cp /usr/bin/find find
codesign --remove-signature ./find
sudo dtruss ./find …

エラー:

codesign --remove-signature ./find
sudo dtruss ./find 
dtrace: system integrity protection is on, some features will not be available

dtrace: failed to execute ./find: Could not create symbolicator for task

ベストアンサー1

現在のバージョンの macOS では、SIP でカバーされるパスの下にある実行可能ファイル (など/usr/bin) は追跡できません。

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

cp /usr/bin/find find
codesign --remove-signature ./find
sudo dtruss ./find …

新しい実行可能ファイルからコード署名を削除する必要がありましたfind。そうしないと、SIP はシステム ファイルにアクセスしていることを依然として認識します (クレジット: @Anmol Singh Jaggi)。

おすすめ記事