Я пытаюсь использовать gprof для профилирования написанного мною приложения на С ++, но пока не могу понять, как его скачать и установить. Я погуглил все, что могу придумать и даже не могу найти ссылку для скачивания. Кто-нибудь, пожалуйста, помогите!
Кажется, в gprof есть два компонента. Один из них является частью самого компилятора GCC, который вызывается с помощью аргумента -pg. Другой является команда gprof, которая по-видимому является частью GNU binutils. Я оставлю это вам, чтобы выяснить, как установить GCC и binutils на OSX …
Так как gprof не работает на OS X в настоящее время, используйте Инструменты Google Performance, теперь известный как gperftools.
Также gcov работает «из коробки», если у вас установлен gcc.
$ gcc -fprofile-arcs -ftest-coverage your_program.c
$ a.out
$ gcov your_program.c
Я не нашел решение MacOS для gprof
а также gcov
у меня не сработало, но gperftools
(Google Performance Tools) действительно работают. Вот как их установить на MacOS:
brew install google-perftools graphviz ghostscript gv
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, такой как Preview, чтобы насладиться модными graphviz
выход.
Очевидно, что запуск профилировщика в программе может быть очень легко автоматизирован с помощью Bash-скрипта, так как есть только один program_name
Параметр и расположение общей библиотеки является постоянным. Вот пример сценария под названием profile.sh
это делает именно это, но включает в себя компиляцию и добавляет вторую переменную, чтобы вы могли скомпилировать .cpp
файлы с другим именем:
#!/bin/bash
g++-7 -fopenmp -O3 -o $1 $2.cpp
CPUPROFILE=$1.prof DYLD_INSERT_LIBRARIES=/usr/local/Cellar/gperftools/2.6.3/lib/libprofiler.dylib ./$1
pprof --pdf $1 $1.prof > $1.pdf
echo "Profiling results: $1.pdf"
Затем измените разрешения, чтобы они могли работать из любой папки:
chmod +x profile.sh
Сценарий может быть вызван из командной строки следующим образом, автоматизируя весь процесс:
./profile.sh program_name cpp_name
Вы можете разделить этапы компиляции и профилирования, что достаточно легко сделать, удалив g++-7
строка в сценарии оболочки.