我在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;
}
Run Code Online (Sandbox Code Playgroud)
我正试图让gprof在我的电脑上工作.如手册所示,我在我的终端中输入以下两行:
g++ -g -pg main.cpp -o a.out
./a.out
Run Code Online (Sandbox Code Playgroud)
但是,这不会生成gmon.out应该的文件.当我尝试gprof在终端输入时,它说:
gprof: can't open: gmon.out (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
这是预料到的,因为gmon.out不存在......
关于我做错了什么的任何想法?
编辑:其他一些可能有帮助的事情:
我的朋友,有一个类似的OS X版本(我可以让他后来确认),以及完全相同的版本,g++并且gprof能够gprof成功使用,如我所概述的那样.
我使用的是旧版本,g++但我在网上看到更新到新版本并没有帮助.
a.out完美的作品,它打印出Hello world!和Goodbye world!.我还尝试使用更复杂的C++程序和几个类,它仍然有同样的问题.一切都编译并正常运行,但没有生成gmon.out文件.
编译一个C++程序使用gcc -pg -g(至少,这些是我在Makefile中给出的参数;没有任何确凿的证据证明执行了什么命令).程序运行到正常完成,CWD设置为我的主目录.没有写gmon.out文件.
gcc是4.4.7.OS是centos 6.
我的程序是由一个手动滚动的Perl守护进程使用fork/exec启动的.我已经验证了CWD是我的主目录,并且它是可写的,通过在执行touch foo我的目标程序之前执行守护进程.至于我已经能够研究,这不应该影响程序的分析或写gmon.out终止(通常).