与在OS X gprof的问题:[程序]是主机架构的不(Problem with gprof on

2019-06-25 11:40发布

我在运行麻烦gprof在OS 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

这里发生了什么?

Answer 1:

该系列产品在这里的事件是应该的工作方式如下:

  1. 编译代码-pg选项
  2. 与链接代码-pg选项
  3. 运行程序
  4. 计划生成gmon.out文件
  5. 运行gprof

问题是,第4步从未发生过。 有很少的信息了这个特定的失败。 在过去的几年中普遍的共识似乎是,苹果宁愿使用鲨鱼,而是和他们已经对修复bug非常宽松,这样有gprof

简而言之:安装Xcode中, man shark



Answer 2:

不幸的是gprof无法在Mac OS X上运行您可能需要使用Shark来代替。 这是在开发工具的一部分/Developer/Applications/Performance Tools/Shark

更新:它看起来好像gprof现在工作在Mac OS X 10.6(雪豹),采用最新的开发工具。



Answer 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工具来强制执行的非原生架构,那么它似乎正常工作。 有一个关于这个讨论在另一个方面一会儿前。 我包含了一些有用的链接和一些更多的信息出现。



文章来源: Problem with gprof on OS X: [program] is not of the host architecture
标签: macos gcc gprof