web-dev-qa-db-fra.com

Comment tracer les appels système d'un programme sous Mac OS X

Je voulais suivre les appels système effectués par la commande find pour déboguer certains problèmes de performances mais je n'ai pas pu comprendre comment faites-le sur Mac OS X Yosemite. Comment puis-je tracer les appels système pour un programme arbitraire similaire à ce que strace fait sur FreeBSD? Je suis particulièrement intéressé par le suivi des appels liés au système de fichiers.

Vous pouvez utiliser dtruss comme dans

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

La page de manuel de cet utilitaire vous aidera à adapter l'utilisation de l'outil à vos besoins.

27
jspcal

Sous les versions actuelles de macOS, les exécutables sous les chemins couverts par SIP (comme /usr/bin) ne peut pas être tracé.

Vous pouvez contourner cela en faisant une copie de l'exécutable dans votre répertoire personnel et en traçant la copie:

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