Problem mit gprof auf OS X: [Programm] ist nicht der host-Architektur
Ich habe Probleme beim laufen gprof
auf OS X. Die Datei test.c
ist:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
und mein terminal sieht wie folgt aus:
$ gcc -pg test.c
$ gcc -pg -o test test.c
$ ./test
Hello, World!
$ gprof test
gprof: file: test is not of the host architecture
Edit: außerdem ist es nicht die Datei zu erstellen gmon.out
.
Was ist denn hier Los?
- Hat es erzeugte die gmon.die out-Datei für Sie? Ich bin nicht in der Lage, es zu tun, dass Sie mit Ihrem Beispiel.
- Nein, tut es nicht. Ich habe vergessen, dies zu überprüfen. Ich nehme an, dies bedeutet, dass das problem früher beginnt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Reihe der Veranstaltungen soll wie folgt funktionieren:
-pg
option-pg
optiongmon.out
Dateigprof
Das problem ist, dass Schritt 4 noch nie passiert. Es gibt sehr wenig Informationen über diese bestimmten Fehler. Der Allgemeine Konsens in den letzten Jahren scheint zu sein, dass Apple lieber mit Hai statt, und Sie waren sehr lasch über die Behebung von Fehlern und solche mit
gprof
.Kurzum: Installieren Sie Xcode,
man shark
gmon.out
vorausgesetzt, dass das Programm ordnungsgemäß beendet. Wenn ich mich Recht erinnere, der profiler command line option fügt code in die Initialisierung und die Beendigung der Laufzeit zum auslösen der Erfassung von Laufzeit-Zähler und letztendlich das schreiben der Ausgabe-Datei. Solange das Programm wird über die Rückkehr vonmain
oder expliziten Aufrufexit()
sollte es generiert eine Ausgabe-Datei.Leider
gprof
funktioniert nicht auf Mac OS X. das werden Sie wahrscheinlich verwenden wollenHai
statt. Es ist Teil der developer tools in/Developer/Applications/Performance Tools/Shark
.Update: Es scheint, als ob
gprof
arbeitet jetzt auf Mac OS X 10.6 (Snow Leopard), mit der neuesten Entwickler-Tools.Es klingt wie
test
wurde mit einer Architektur, diegprof
nicht erwarten. Versuchen Sie Folgendes:Den neueren MacOS unterstützt das ausführen von ausführbaren Dateien, die von IBM PPC-und Intel-x86-Architektur. Einige der tool-Kette scheint ein bisschen dicht über diesen. Gprof scheint zu erwarten, dass die ausführbare Datei in der nativen Architektur. Jedoch, wenn Sie die
arch
Dienstprogramm zu zwingen, das nicht-native-Architektur ausgeführt werden, dann es scheint, richtig zu arbeiten. Es war ein die Diskussion über diese in einem anderen Kontext vor einer Weile. Ich enthalten nützliche links und einiges mehr an Informationen gibt.gprof
Handbuch Seite unter UNIVERSAL-DATEI-UNTERSTÜTZUNG auf meinem MacBook Pro - Intel Core 2 Duo, OS 10.5.7. Sie können aucharch
ohne Argumente, um zu sehen, was die native Architektur und Blick aufgcc -v
zu sehen, was die--target=
Spezifikation für den compiler ist.arch
zurücki386
, undgcc -v
zeigtTarget: i686-apple-darwin9
gcc -arch ppc -arch i686 -pg -o test test.c
Produkt wird eine Binärdatei, die enthält sowohl Architektur. Gprof verarbeitet diese Datei auf meinem system. Von dem, was Sie sagen,gcc
produzieren sollte eine i686-executable, das ist das, wasgprof
erwartet. Werfen Sie einen Blick auf diearch
man-Seite. Sie beschreiben eine Reihe von verschiedenen system-Einstellungen (env und andere), die verändert werden könnte diese.