web-dev-qa-db-fra.com

Profilage de 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 processeur (similaire au profileur matlab).

Voici ce que j'ai essayé

  • gprof. C'est ce que j'utilise sur ma machine Linux, mais cela 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 profiler quoi que ce soit dans mon binaire compilé. Je ne trouve pas non plus de didacticiel utile.
  • (D'autres recherches ont révélé Shark, qui n'est plus disponible et Valgrind qui est pour la mémoire).

J'apprécie vraiment l'aide!

57
foges

Les instruments sont l'outil à utiliser. Une explication complète des Instruments n'entre pas dans le cadre de cette réponse, mais voici un guide de démarrage rapide:

  1. Instruments ouverts.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 du cercle rouge ("enregistrer") pour démarrer votre application.
  5. Le cas échéant, faites certaines choses dans votre application que vous devez profiler.
  6. Appuyez à nouveau sur le bouton d'enregistrement pour arrêter l'enregistrement.
  7. Utilisez les outils dans Instruments pour analyser vos résultats.

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

  • Extension de 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 focaliser
  • Double-cliquez sur une fonction pour afficher la source associée
  • La case "Inverser l'arborescence des appels" sur le côté gauche

1 Une façon simple d'ouvrir 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 de taper "Instruments".

2 Cliquez sur "Choisir la cible ..." et accédez au chemin de votre exécutable.

99
duskwuff

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

De plus, vous pouvez faire le "profilage du pauvre" simplement en exécutant le programme dans un débogueur et en l'interrompant manuellement une demi-douzaine de fois environ et en notant la pile d'appels à ces moments. C'est très simple mais cela fonctionne étonnamment bien comme première passe pour une fraction importante des programmes.

5
bames53

Les instruments sont l'outil à utiliser. Pour surmonter le problème des traces vides, assurez-vous que vous ouvrez Instruments à partir de XCode:

Xcode > Open Developer Tool > Instruments

Si vous ouvrez 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 vierges.

5
chutney