Похоже, test
построен с использованием архитектуры, которую gprof
не ожидает. Попробуйте следующее:
$ 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 ...
Более новый MacOS поддерживает запуск исполняемых файлов из архитектуры IBM PPC и Intel x86. Некоторые цепочки инструментов, кажется, немного плотно об этом. Gprof, похоже, ожидает, что исполняемый файл будет в нативной архитектуре. Однако если вы используете утилиту arch
для принудительного выполнения не родной архитектуры, то, похоже, она работает правильно. Это было обсуждение этого в другом контексте некоторое время назад. Я включил несколько полезных ссылок и дополнительную информацию.