Использование gprof с make-файлом

У меня проблемы с профилированием моей программы.

Я компилирую каждую функцию по отдельности следующим образом:

function1.o:        function1.cpp
    g++ -g -pg -z -c function1.cpp

Затем я связываю воедино все так:

exec: function1.o function2.o function3.o main.o  
    g++ -g -pg -z -c -o exec function1.o function2.o function3.o main.o

Но когда я запускаю программу с ./exec, а затем профилирую данные с gprof exec, я не получаю данных профилирования, он говорит следующее:

granularity: each sample hit covers 4 byte(s) no time accumulated

Я делаю что-то неправильно?


person Eddy    schedule 01.03.2012    source источник
comment
Думали ли вы об использовании вместо них valgrind-callgrind и kcachegrind? У меня была аналогичная проблема, я не мог заставить CMAKE работать с gprof, в конечном итоге использовал callgrind. Визуализация kcachegrind полезна.   -  person Sam DeHaan    schedule 01.03.2012
comment
Как вы думаете, почему проблема связана с использованием make? Вы не видите проблемы, если компилируете вручную, без использования make?   -  person eriktous    schedule 02.03.2012


Ответы (1)


Вероятно, ваша программа не работает достаточно долго, чтобы gprof собрал какие-либо образцы.

Вы можете произвольно увеличить время выполнения, выполнив основной цикл несколько раз.

Если вы работаете в Linux, позвольте мне также порекомендовать perf, который является действительно лучшим инструментом профилирования.

person sam hocevar    schedule 01.03.2012