Как отслеживать системные вызовы в Mac OS?
DTruss
DTruss это аналог strace на linux системах, использующая DTrase для этого. Эта утилита позволяет вам отслеживать системные вызовы у запушенного процесса, либо запустить процесс и отследживать его вызовы.
Замечание
В последних версия Mac OS некоторые пути из которых запущены процессы находятся под защитой SIP (System Integrity Protection), которая запрещает отслеживание системных вызовов, например путь /usr/bin. Есть выход, который я бы не рекомендовал вам. Можно отключить для некоторых процессов эту защиту в recovery mode вашей системы. В любом случае вы можете использовать DTruss для процессов которые не находятся под защитой SIP.
Примеры
запуск и отслеживание команды “df -h”
dtruss df -h
отслеживание процесса с PID 1871
dtruss -p 1871
отслеживать все процессы с именем “tar”
dtruss -n tar
запустить test.sh и отслеживать все дочерние процессы и форки
dtruss -f test.sh
запуск “date” команды и вывести реальное и процессорное время затраченое на вызов
dtruss -eo date
Вы можете компнуть глубже и разобраться в DTrace напрямую. DTrace это мощьный инструмент для профилирования в реальном времени. Можете почитать здесь
Instruments
Как альтернативный путь, вы можете попробовать Istruments, который идет в поставке XCode (Документация).
Запустить профилирование, сохранить результат в файл result.trace
и открыть этот результат.
instruments -d result.trace -t 'System Trace' /bin/ls
open result.trace