Я использую gprof для профилирования. Но gmon.out не создается, когда я разветвляю другой исполняемый файл внутри основного исполняемого файла, который компилируется с опцией -pg. Любая идея, как решить это.
Но gmon.out не создается, когда я разворачиваю другой исполняемый файл
Это вероятно делает. Он просто имеет то же имя, что и все остальные gmon.out
файлы. Они просто молча переписывают друг друга.
GNU во всей своей бесконечной мудрости рекомендует, чтобы каждый дочерний процесс, который вы хотите профилировать, выполнялся в своем текущем каталоге. использование mkdir
а также chdir
в вашем коде по мере необходимости. поскольку gmon.out
выписывается по окончании процесса, необходимо только chdir
перед звонком exit
,
Я также рекомендую посмотреть на valgrind
, Помимо прочего, у него есть выходные файлы something.somethingelse.$PID
,
когда вы устанавливаете GMON_OUT_PREFIX=some_file_name
переменная окружения, gprof создаст дополнительные файлы gmon для каждого дочернего процесса с именем some_file_name.pid
,