15

默认配置文件来自可执行文件,运行并调用该文件gmon.out。有没有办法指定一个新的位置?

我在 i386/linux2.6 上使用 gcc 3.4.6

4

4 回答 4

16

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

如果设置环境变量GMON_OUT_PREFIX,则输出文件命名为 ${GMON_OUT_PREFIX}.[PID],pid 是分析进程的 id。

例如:

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

gmon out 文件是:mygmon.12345,假设 foo 进程 id=12345。

于 2009-01-21T10:30:35.710 回答
7

jscoot解决方案对我有用,重要的区别是GMON_OUT_PREFIX执行时设置,而不是在编译时设置。

于 2011-01-25T11:15:25.527 回答
3

上周我遇到了同样的问题,我通过以下方式解决了它。这里的想法是将进程当前目录更改为您想要生成 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
于 2011-03-17T19:50:58.813 回答
1

给 gprof 一个不同的文件名:

gprof a.out gprof-foo.out

至于重命名它们,请设置 GMON_OUT_PREFIX 环境变量。我通过 libc 上的好 ol' objdump 找到了这个……当然,libc 文档什么也没说。

于 2009-01-21T06:02:15.800 回答