Как отслеживать системные вызовы программы в 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 …