9
votes

Problème avec GProf sur OS X: [programme] n'est pas de l'architecture hôte

J'ai des problèmes d'exécution GPROF sur OS X. Le fichier test.c est: xxx

et mon look de mon terminal comme: xxx

éditer: aussi, il ne génère pas le fichier gmon.out .

Qu'est-ce qui se passe ici ?


2 commentaires

A-t-il généré le fichier gmon.out pour vous? Je ne suis pas capable de le faire avec votre exemple.


Non, ça ne le fait pas. J'ai oublié de vérifier cela. Je suppose que cela signifie que le problème commence plus tôt?


3 Réponses :


3
votes

Il sonne comme Test code> est construit à l'aide d'une architecture que GPROF code> ne s'attend pas. Essayez ce qui suit:

$ cat > test2.c
#include <stdio.h>
int main() { printf("test\n"); return 0; }
^D
$ gcc -arch i386 -pg -o test2 test2.c
$ file test2
test2: Mach-O executable i386
$ ./test2
test
$ gprof test2
... bunch of output ...
$ gcc -arch ppc -pg -o test2 test2.c
$ file test2
test: Mach-O executable ppc
$ ./test2
test
$ gprof test2
gprof: file: test2 is not of the host architecture
$ arch -ppc gprof test2
... same bunch of output ...


4 commentaires

Lorsque je compile avec -arch I386 ou -arch PPC, je reçois la même erreur de GProf (et aucun fichier Gmon.out n'est généré dans les deux cas)


C'est étrange ... généralement l'un ou l'autre fonctionnera. Quelle version du matériel et du système d'exploitation utilisez-vous? L'erreur est définitivement causée par une inadéquation entre l'architecture de l'exécutable et l'architecture hôte. Ceci est mentionné explicitement dans la page GPROF GPROF SOUS SUPPORT DE FICHIER UNIVERSAL SUR MON MACBOOK Pro - Intel Core 2 Duo, OS 10.5.7. Vous pouvez également utiliser arc sans argument pour voir quelle est l'architecture native et regarder gcc -v pour voir ce que la spécification - cible = pour le compilateur est.


J'utilise également le système d'exploitation 10.5.7, Intel Core 2 Duo. Appelant arc renvoie i386 et GCC -V montre cible: i686-pomme-darwin9


Vous pouvez essayer de faire un fichier gras en spécifiant plus d'une architecture. Quelque chose comme gcc -arch ppc -arch i686 -pg -o test test.c produit un binaire qui contient une architecture. GProf gère ce fichier sur mon système. D'après ce que vous dites, gcc devrait produire une exécutable i686 qui est ce que GPROF attend. Jetez un coup d'œil à la page man man '. Ils décrivent un tas de paramètres système différents (ENV et autres) qui pourraient changer cela.



4
votes

Malheureusement, GPROF ne fonctionne pas sur Mac OS X. Vous voudrez probablement utiliser requin à la place. Il fait partie des outils de développement dans / développeur / applications / outils de performance / requin .

Mise à jour: Il apparaît comme si GProf travaille maintenant sur Mac OS X 10.6 (Snow Leopard), en utilisant les derniers outils de développement.


1 commentaires

Toute raison pour laquelle GProf ne fonctionne pas sur OS X? OS X n'est-il pas censé être unix pour les outils?



9
votes

La série d'événements ici est censée fonctionner comme suit:

  1. Compiler le code avec -pg option
  2. Code de liaison avec -pg option
  3. PROGRAMME DE RUN
  4. programme génère gmon.out fichier
  5. Run GPROF

    Le problème est que l'étape 4 n'arrive jamais. Il y a très peu d'informations sur cet échec spécifique. Le consensus général au cours des dernières années semble être que Apple préférerait utiliser le requin à la place, et ils ont été très laxistes sur la fixation de bugs et tels que GPROF . .

    En bref: Installez Xcode, homme requin


1 commentaires

Je vais devoir vérifier le requin. Je n'ai jamais eu de problème à obtenir un programme de générer gmon.out à condition que le programme sortait bien. IIRC, l'option de ligne de commande du profileur insère le code dans l'initialisation et la résiliation du temps d'exécution pour déclencher la capture de compteurs d'exécution et, finalement, l'écriture du fichier de sortie. Tant que le programme quitte le processus de retour de principal ou explicite sur quitter () , il devrait générer un fichier de sortie.