默认情况下,从可执行文件运行的配置文件名为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输出文件为: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上使用objdump找到的这个方法...当然,libc文档中没有提到。