默认配置文件来自可执行文件,运行并调用该文件gmon.out
。有没有办法指定一个新的位置?
我在 i386/linux2.6 上使用 gcc 3.4.6
太糟糕了,GMON_OUT_PREFIX
glibc 中没有记录环境变量。我从网上获得了以下信息并在我的机器上进行了测试。
如果设置环境变量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。
上周我遇到了同样的问题,我通过以下方式解决了它。这里的想法是将进程当前目录更改为您想要生成 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
给 gprof 一个不同的文件名:
gprof a.out gprof-foo.out
至于重命名它们,请设置 GMON_OUT_PREFIX 环境变量。我通过 libc 上的好 ol' objdump 找到了这个……当然,libc 文档什么也没说。