Как установить gprof на OS X

Я пытаюсь использовать gprof для профилирования приложения на c++, которое я написал, но я не могу понять, как загрузить и установить его. Я погуглил все, что мог придумать, и даже не могу найти ссылку для загрузки. Кто-нибудь, пожалуйста, помогите!

3 ответов


кажется, есть два компонента для gprof. Один из них является частью самого компилятора GCC, вызываемого с помощью аргумента-pg. Другой-команда gprof, которая видимо является частью GNU binutils. Я оставлю это вам, чтобы выяснить, как установить GCC и binutils на OSX...


поскольку gprof на данный момент не работает на OS X, Используйте Инструменты Производительности Google, Теперь известный как gperftools.

и gcov работает "из коробки", если у вас установлен gcc.

$ gcc -fprofile-arcs -ftest-coverage your_program.c
$ a.out
$ gcov your_program.c

я не нашел решение MacOS для gprof и gcov у меня не получилось, но gperftools (инструменты производительности Google)работают. Вот как установить их на MacOS:

brew install google-perftools graphviz ghostscript
brew link --overwrite ghostscript

далее запустите профилировщик в программе:

CPUPROFILE=program_name.prof DYLD_INSERT_LIBRARIES=/usr/local/Cellar/gperftools/2.6.3/lib/libprofiler.dylib ./program_name
pprof --pdf program_name program_name.prof > program_name.pdf

вы можете найти больше вариантов для gperftools здесь. Наконец, откройте program_name.pdf файл в PDF viewer, такие как предварительный просмотр, чтобы насладиться фантазии graphviz выход.

очевидно, запуск профилировщика на программа может быть автоматизирована очень легко с помощью скрипта Bash, так как есть только один program_name параметр и расположение общей библиотеки являются постоянными. Вот пример скрипта под названием profile.sh это делает именно это, но включает компиляцию и добавляет вторую переменную, чтобы вы могли скомпилировать .cpp файлы с другим именем:

#!/bin/bash
g++-7 -fopenmp -O3 -o  .cpp
CPUPROFILE=.prof DYLD_INSERT_LIBRARIES=/usr/local/Cellar/gperftools/2.6.3/lib/libprofiler.dylib ./
pprof --pdf  .prof > .pdf
echo "Profiling results: .pdf"

затем измените разрешения, чтобы он мог работать из любой папки:

chmod 755 profile.sh

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

./profile.sh program_name cpp_name

вы можете разделить шаги компиляции и профилирования, что достаточно легко сделать, удалив g++-7 строка в сценарии оболочки.