Как отслеживать системные вызовы программы в Mac OS X

Я хотел отследить системные вызовы, сделанные найти команда для отладки некоторых проблем производительности однако я не мог понять, как это сделать на Mac OS X Yosemite. Как я могу отслеживать системные вызовы произвольной программы аналогично тому, что strace делает на FreeBSD? Меня особенно интересует отслеживание вызовов, связанных с файловой системой.

2 ответов


можно использовать dtruss как и в

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

на страница руководства этой утилиты поможет вам адаптировать использование инструмента к вашим потребностям.


в текущих версиях macOS исполняемые файлы под путями, покрытыми SIP (например,/usr/bin) не могут быть прослежены.

вы можете обойти это, сделав копию исполняемого файла в своем домашнем каталоге и проследив копию:

cp /usr/bin/find find
sudo dtruss ./find …