相关疑难解决方法(0)

使用g ++编译-pg标志时,不会创建gmon.out

我在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++ macos g++ gprof

13
推荐指数
1
解决办法
6042
查看次数

使用gcc -pg -g编译后不会写入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终止(通常).

c++ linux gcc gprof

8
推荐指数
2
解决办法
4276
查看次数

标签 统计

c++ ×2

gprof ×2

g++ ×1

gcc ×1

linux ×1

macos ×1