2010-08-09 3 views
2

J'ai un utilisateur se plaignant que mon application prend beaucoup de temps CPU quand il devrait être inactif. Ceci est une application Cocoa sur Mac OS Leopard. Ce que j'aimerais faire, c'est d'avoir un thread d'arrière-plan qui récupère périodiquement les traces du thread principal et les enregistre. Sinon, si je pouvais lui faire exécuter un programme en ligne de commande pour récupérer toutes les piles des threads (ou mieux encore, un graphique d'appel avec des informations de profilage CPU), il pourrait le faire et m'envoyer les résultats. Je sais qu'il y a un profil CPU intégré dans XCode, mais ce problème n'est reproductible que sur la machine de l'utilisateur, donc XCode n'est pas une option (je ne veux pas lui demander de l'installer).CPU profilant une application Cocoa dans le domaine

Je ne trouve pas d'outil de ligne de commande qui viderait les traces de pile sur OSX, ni d'API pour accéder aux piles des autres threads. Je suppose que GDB pourrait le faire, mais ce serait vraiment difficile à expliquer à un utilisateur.

Répondre

2

Dites à votre utilisateur de lancer Activity Monitor (dans/Applications/Utilitaires). Dans Activity Monitor, votre utilisateur peut sélectionner la ligne correspondant à votre application et appuyer sur le bouton "Sample" dans la barre d'outils. Cela prendra un échantillon de 10 secondes de votre application. Il peut ensuite enregistrer cela sur le disque et vous envoyer le fichier par courrier électronique.

Édition: Si vous voulez une version en ligne de commande, regardez/usr/bin/sample. Il fait effectivement la même chose, mais Activity Monitor devrait être beaucoup plus facile à utiliser pour un utilisateur final.

+0

C'est parfait. Merci, Kevin! – George

Questions connexes