configuration文件是从可执行文件中运行的默认文件,名为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。
jscoot的解决方案为我工作。 但在执行时设置GMON_OUT_PREFIX非常重要,而不是在编译时。
上周我遇到了同样的问题,我用下面的方法解决了这个问题。 这里的想法是将进程当前目录更改为您要生成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文档没有说什么。