2009-01-21 77 views

回答

15

太糟糕了,环境变量GMON_OUT_PREFIX没有记录在glibc中。我从网上获得了以下信息并在我的机器上进行了测试。

如果您设置了环境变量GMON_OUT_PREFIX,那么输出文件被命名为 ${GMON_OUT_PREFIX}.[PID],pid是配置文件进程的ID。

例如:

GMON_OUT_PREFIX=mygmon; gcc -o foo -pg foo.c 

的gmon出的文件是:mygmon.12345,假设FOO进程ID = 12345。

+0

如下所述,要在运行,而不是在编译时设置GMON_OUT_PREFIX? – Yair 2015-08-21 17:10:47

1

GCC 3.4.6为了给不同的文件名来GPROF:

gprof a.out gprof-foo.out 

至于重命名这些,设置GMON_OUT_PREFIX环境变量。我在libc上找到了一个好的ol'objdump ....自然,libc文档没有说什么。

+0

我真的很好奇,为什么这不是记录 – hhafez 2011-01-26 02:11:32

3

jscoot的解决方案为我工作。 ,但在执行时设置GMON_OUT_PREFIX非常重要,而不是在编译时。

2

上周我遇到了同样的问题,我用下面的方法解决了这个问题。这里的想法是将进程当前目录更改为您想要生成gmon.out文件的任何位置。文件名不能以这种方式更改。它允许您更改可以保存文件的位置。

#ifdef GPROF 
         /* so we can gprof */ 
         if (1) { 
          char tmpdir[32]; 
          snprintf(tmpdir, 32, "/tmp/%05d", mypid); 
          mkdir(tmpdir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); 
          chdir(tmpdir); 
         } 
#endif