以任何方式指定配置文件数据的位置

时间:2009-01-21 04:51:53

标签: linux gcc gprof

运行可执行文件的默认配置文件,文件名为gmon.out。有没有办法指定新的位置?

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

4 个答案:

答案 0 :(得分:18)

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

如果设置环境变量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。

答案 1 :(得分:3)

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

答案 2 :(得分: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

答案 3 :(得分:1)

为gprof提供不同的文件名:

gprof a.out gprof-foo.out

关于重命名它们,请设置GMON_OUT_PREFIX环境变量。我在libc上发现了这个很好的'objdump ....当然,libc文档什么也没说。