9

gprofOS X での実行に問題があります。ファイルtest.cは次のとおりです。

#include <stdio.h>

int main() {
  printf("Hello, World!\n");
  return 0;
}

そして私の端末は次のようになります:

$ gcc -pg test.c
$ gcc -pg -o test test.c
$ ./test
Hello, World!
$ gprof test
gprof: file: test is not of the host architecture

編集:また、それはファイルを生成しませんgmon.out

何が起きてる?

4

3 に答える 3

9

ここでの一連のイベントは、次のように機能するはずです。

  1. -pgオプションを指定してコードをコンパイルする
  2. -pgオプションでコードをリンクする
  3. プログラムを実行
  4. プログラムはgmon.outファイルを生成します
  5. 走るgprof

問題は、ステップ 4 が発生しないことです。この特定の障害に関する情報はほとんどありません。過去数年間の一般的なコンセンサスは、Apple が代わりにサメを使用することを望んでいるようで、gprof.

要するに:Xcodeをインストールし、man shark

于 2009-07-09T03:11:46.400 に答える
4

残念ながらgprof、Mac OS X では動作しませんShark。代わりに使用することをお勧めします。の開発者ツールの一部です/Developer/Applications/Performance Tools/Shark

更新:gprof最新の開発者ツールを使用して、Mac OS X 10.6 (Snow Leopard) で動作しているようです。

于 2009-07-09T03:07:37.670 に答える
3

期待していない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ユーティリティを使用して非ネイティブ アーキテクチャを強制的に実行すると、正常に動作するようです。少し前に別の文脈でこれについての議論がありました。私はそこにいくつかの有用なリンクといくつかの詳細情報を含めました。

于 2009-07-09T03:05:57.953 に答える