Любой способ указать местоположение данных профиля - PullRequest
13 голосов
/ 21 января 2009

По умолчанию запускается файл профиля из исполняемого файла и файл называется gmon.out. Можно ли указать новое местоположение?

Я использую gcc 3.4.6 на i386 / linux2.6

Ответы [ 4 ]

18 голосов
/ 21 января 2009

Жаль, переменная окружения GMON_OUT_PREFIX не документирована в glibc. Я получил следующую информацию из Интернета и проверил на своей машине.

если вы установите переменную среды GMON_OUT_PREFIX, то выходной файл будет назван как ${GMON_OUT_PREFIX}.[PID], pid - это идентификатор профилированного процесса.

Например:

GMON_OUT_PREFIX=mygmon; gcc -o foo -pg foo.c

Файл gmon out: mygmon.12345, при условии, что идентификатор процесса foo = 12345.

3 голосов
/ 17 марта 2011

На прошлой неделе я столкнулся с той же проблемой и решил ее следующим образом. Идея здесь состоит в том, чтобы изменить текущий каталог процесса, где вы хотите создать файл 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
3 голосов
/ 25 января 2011

Решение jscoot работает для меня. но установка GMON_OUT_PREFIX важна во время выполнения, а не во время компиляции.

1 голос
/ 21 января 2009

Чтобы присвоить gprof другое имя файла:

gprof a.out gprof-foo.out

Что касается их переименования, установите переменную среды GMON_OUT_PREFIX. Я нашел это по доброму старому objdump на libc .... Естественно, документы libc ничего не говорят.

...