【发布时间】:2013-11-18 13:19:16
【问题描述】:
我在 Mac OSX 版本 10.8.5 (Mountain Lion) 上运行。我有以下简单的 C++ 代码。
main.cpp:
#include <iostream>
int main ()
{
std::cout << "Hello world!"<<std::endl;
std::cout << "Goodbye world!"<<std::endl;
return 0;
}
我正在尝试让 gprof 在我的计算机上工作。正如manual 建议的那样,我在终端中输入以下两行:
g++ -g -pg main.cpp -o a.out
./a.out
然而,这并没有像它预期的那样生成gmon.out 文件。当我尝试在终端中输入gprof 时,它显示:
gprof: can't open: gmon.out (No such file or directory)
这是意料之中的,因为gmon.out 不存在...
关于我做错了什么有什么想法吗?
编辑:其他一些可能有帮助的事情:
我的朋友有类似的 OS X 版本(我可以稍后请他确认),以及完全相同版本的
g++和gprof,能够 如我所述,成功使用gprof。我使用的是旧版本的
g++,但我在网上看到更新到新版本没有帮助。a.out完美运行,它打印出Hello world!和Goodbye world!。我还尝试了一个更复杂的 C++ 程序 几个班,它仍然有同样的问题。一切 编译运行正常,但没有生成gmon.out文件。
【问题讨论】:
-
stackoverflow.com/questions/1101545/… 的可能副本,尽管其中一个答案声称
gprof现在可以在 OS X 10.6 上运行。我看不出你做错了什么,你所做的正是你在我的 Linux 系统上所期望的那样工作。 -
是的,我有 10.8.5,我也看到了这个问题,但我想我会开始一个新线程,因为我有一个更新版本的 OS X 并且那个线程似乎没有任何地方.还有一个我没有遇到的“测试不是主机架构”问题。
-
不管人们怎么说,
-pg在我的任何系统 10.7-10.9.4 上都不起作用。我相信您可以安装自己的 gcc 版本(与 Apple 提供的版本不同),并且可以在那里进行分析。 -
即使 gprof 在这里工作,你也不会在你的代码中得到任何样本,因为在 I/O 之外 gprof 看不到无论如何,您编译的代码大约需要一纳秒。它可以在 gprof 样本之间运行数千次。
-
-pg和 gprof 在 OSX 10.10.3 中绝对不适合我。甚至尝试运行cc而不是clang并明确调用exit。