有没有一种方法可以指定个人资料数据的位置?

16

默认情况下,从可执行文件运行的配置文件名为gmon.out。是否有任何方法可以指定新的位置?

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


相关链接:https://dev59.com/0GMk5IYBdhLWcg3w0RGU - alk
4个回答

17

很遗憾,环境变量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。


2
如下所述,您想在运行时设置GMON_OUT_PREFIX,而不是编译时设置? - Yair

9

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


4

上周我遇到了同样的问题,我是通过以下方法解决的。思路是将进程当前目录更改为您想要生成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

1

为gprof指定一个不同的文件名:

gprof a.out gprof-foo.out

关于重命名它们,可以设置GMON_OUT_PREFIX环境变量。我是通过在libc上使用objdump找到的这个方法...当然,libc文档中没有提到。


我真的很好奇为什么这个没有被记录下来。 - hhafez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接