




Чтобы дать gprof другое имя файла:
gprof a.out gprof-foo.out
Что касается их переименования, установите переменную окружения GMON_OUT_PREFIX. Я нашел этот старый добрый objdump на libc .... Естественно, в документации libc ничего не сказано.
Мне действительно любопытно, почему это не задокументировано
К сожалению, переменная окружения GMON_OUT_PREFIX не задокументирована в glibc. Я получил следующую информацию из Интернета и протестировал ее на своей машине.
если вы установите переменную среды GMON_OUT_PREFIX, то выходной файл будет назван как
${GMON_OUT_PREFIX}.[PID], pid - это идентификатор профилированного процесса.
Например:
GMON_OUT_PREFIX=mygmon; gcc -o foo -pg foo.c
файл вывода gmon: mygmon.12345, при условии, что идентификатор процесса foo = 12345.
Как указано ниже, вы хотите установить 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
Связанный: stackoverflow.com/q/18939913/694576