当可执行文件分叉另一个可执行文件时,不会创建gmon.out

时间:2013-07-25 10:02:52

标签: c++ linux g++ gprof

我正在使用gprof进行性能分析。但是当我在使用选项-pg编译的主可执行文件中分叉另一个可执行文件时,不会创建gmon.out。知道如何解决它。

2 个答案:

答案 0 :(得分:4)

  

但是当我分叉另一个可执行文件时,不会创建gmon.out

可能会这样。它只是与所有其他gmon.out文件同名。他们只是默默地互相覆盖。

GNU以其无限的智慧,建议您要分析的每个子进程都在其自己的当前目录中执行。根据需要在代码中使用mkdirchdir。由于gmon.out是在流程结束时写出来的,因此只需chdir拨打exit

我还建议您查看valgrind。除了其他好处之外,它的输出文件名为something.somethingelse.$PID

答案 1 :(得分:3)

当您设置GMON_OUT_PREFIX=some_file_name环境变量时,gprof将为每个子进程创建名为some_file_name.pid的其他gmon文件。