Как установить 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
строка в сценарии оболочки.