2010-02-16 53 views
7

Ma façon Linux standard de l'application de profilage est:Profilage de l'application g ++ sur MacOSX?

1) compile with g++ -pg 
2) run prog 
3) gprof 

Apparemment gprof est Broek sur MacOSX 10.5, et je suis censé utiliser Shark. Tous les tutoriels que j'ai trouvés aby Shark impliquent XCode (alors que ma construction est faite avec Makefiels et g ++).

Est-ce que quelqu'un peut poster des instructions étape par étape pour utiliser shark sur une application construite avec g ++? Dites quelque chose comme:

int main() { while(1); } 

g++ blah.cpp -o blah; do I need to give it more command line arguments? 

how do I use shark here? 
+0

Avez-vous envisagé d'utiliser dtrace (avec un programme appelé instruments GUI)? –

Répondre

3

profilage instrumenté tels que gprof n'est pas particulièrement utile, sauf si vous voulez vraiment juste savoir sur les graphiques d'appels et le nombre de fois que les fonctions sont appelées. Beaucoup plus utile pour l'analyse des performances est un profileur d'échantillonnage, et pour cet outil Shark d'Apple (partie de CHUD) est l'un des meilleurs.

Vous n'avez vraiment pas besoin d'utiliser Xcode pour créer une application pour le profilage sous Shark - J'ai des outils en ligne de commande construits avec Makefiles que je profile avec Shark tout le temps. Vous pouvez soit déclencher Shark automatiquement à partir de votre code (il existe deux API différentes pour cela) ou vous pouvez utiliser l'outil de ligne de commande "chudRemoteCtrl" (man chudRemoteCtrl) ou vous pouvez simplement configurer les options de lancement dans Shark pour définir le chemin exécutable , répertoire de travail, arguments de ligne de commande, etc, et vous partez. Assurez-vous de créer votre application avec -g afin que Shark puisse afficher le code source plutôt que le code objet désassemblé.

Shark configuration for command line tool http://www.freeimagehosting.net/uploads/386737a1fa.jpg

1

Voici un relevant thread

Malheureusement, je ne sais pas comment faire cela à la ligne de commande sous Mac OS X, et je suis en cours d'exécution ... 10.6 je laisse généralement le La magie Xcode prend le dessus: -S