On m'a récemment parlé d'un outil utile de débogage sur Mac OS X appelé stackshot
, cependant je ne sais pas comment l'invoquer. Selon la documentation, il fonctionne en tant que démon, mais la page de manuel semble également indiquer qu'il peut être invoqué depuis la ligne de commande. Comment puis-je utiliser stackshot pour mon application actuellement en cours d'exécution?
Réponses
Trop de publicités?sudo /usr/libexec/stackshot -i
Stackshot est destiné au débogage de problèmes système (deadlocks, etc.), et non à des applications individuelles ; il crée donc un dump de la pile de l'ensemble du système, et non d'une application unique.
Avec la configuration par défaut, cela créera un stack shot dans /Library/Logs/stackshot.log
Apple m'a demandé de produire un Stackshot sur mon appareil iOS. Pour ce faire, quand le problème se produit, maintenez simultanément enfoncé puis relâchez le bouton Home et un bouton de volume.
Ensuite, synchronisez votre appareil avec iTunes.
Après la synchronisation, votre fichier journal stackshot sera stocké sur l'ordinateur. Je ne sais pas où il se trouve sous Windows, mais sur un Mac, il se trouve dans :
~/Library/Logs/CrashReporter/MobileDevice//stacks-yyyy-mm-dd-xxxxxx.log
Stackshot ne semble plus être inclus avec OS X, du moins pas dans 10.11. Cependant, vous pouvez toujours prendre un échantillon de votre application en utilisant l'outil /usr/bin/sample.
Ceci est également accessible en utilisant le Moniteur d'activité :
- Ouvrez le Moniteur d'activité
- Double-cliquez sur votre application
- Cliquez sur le bouton Sample dans le coin inférieur gauche
Cela vous permettra de voir ce qui se passe actuellement dans votre application afin que vous puissiez déboguer les problèmes de consommation CPU sans exécuter l'application depuis Xcode.