Profilage c++ sur mac os x

J'essaie de profiler du code C++ sur mon mac (os X Lion) et je n'ai rien trouvé d'utile. Je suis à la recherche d'un profileur qui me dira quelles fonctions prennent mon temps cpu (similaire au profileur matlab).

Voici ce que j'ai essayé

  • gprof. C'est ce que j'utilise sur ma machine linux, mais il me donne juste une sortie vide sur mon mac (apparemment un problème connu)
  • Instruments. Je ne peux pas pour la vie de moi comprendre comment le profil rien dans mon binaires compilés. Je ne peux pas non plus trouver une sorte de tutoriel utile.
  • (d'autres recherches ont révélé Shark, qui n'est plus disponible et Valgrind qui est pour la mémoire).

Vraiment apprécier l'aide!

49
demandé sur foges 2012-07-12 09:42:42

3 réponses

Instruments est l'outil à utiliser. Une explication complète des Instruments est en dehors du cadre de cette réponse, mais voici un guide de démarrage rapide:

  1. Ouvrez Les Instruments.1
  2. Sélectionnez le modèle "Time Profiler".
  3. Sélectionnez votre application dans le menu déroulant" cible".2
  4. Appuyez sur le bouton cercle rouge ("Enregistrer") pour lancer votre application en cours d'exécution.
  5. le cas échéant, faites certaines choses dans votre application que vous devez profiler.
  6. Appuyez sur le bouton bouton d'enregistrement pour arrêter l'enregistrement.
  7. Utilisez les outils de Instruments pour analyser vos résultats.

Parmi les outils disponibles, ceux qui seront le plus souvent utiles sont:

  • développer l'arborescence des appels à l'aide des flèches de divulgation
  • cliquer sur la flèche encerclée sur un nom de fonction pour le mettre au point
  • double-cliquez sur une fonction pour afficher la source associée
  • la case à cocher" Inverser L'arborescence des appels " à gauche côté

1 Un moyen facile d'ouvrir les Instruments est D'utiliser Spotlight: Il suffit de cliquer sur la loupe dans le coin supérieur droit de la barre des tâches (à côté de l'horloge) et tapez "Instruments".

2 Cliquez Sur "Choisir Une Cible..."et accédez au chemin de votre exécutable.

89
répondu duskwuff 2013-03-15 19:49:09

Instruments est vraiment la bonne réponse, mais si vous ne pouvez pas comprendre comment l'utiliser, une autre option est le profileur dans l'application de moniteur d'activité intégrée. Dans Activity Monitor, vous pouvez obtenir des informations sur n'importe quel processus en cours d'exécution et il y a un bouton pour échantillonner son exécution pendant un certain temps. Vous devrez démarrer votre programme, passer au moniteur D'Activité, trouver le processus, puis l'échantillonner.

En outre, vous pouvez faire le "profilage de l'homme pauvre" simplement en exécutant le programme dans un débogueur et pause manuellement une demi-douzaine de fois, et en notant la pile d'appel à ces moments. C'est très simple mais cela fonctionne étonnamment bien comme un premier passage pour une fraction significative des programmes.

5
répondu bames53 2014-01-28 19:29:05

Instruments est l'outil à utiliser. Pour résoudre le problème des traces vides, assurez-vous d'ouvrir les Instruments depuis XCode:

Xcode > Open Developer Tool > Instruments

Si vous ouvrez des Instruments à partir d'une ancienne icône Instruments que vous avez épinglée sur votre dock avant la dernière mise à jour de XCode, cela vous donnera des traces vides.

5
répondu chutney 2014-12-04 23:01:48