运行可执行文件的默认配置文件,文件名为gmon.out
。有没有办法指定新的位置?
我在i386 / linux2.6上使用gcc 3.4.6
答案 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文档什么也没说。