Jak zainstalować gprof na OS X
Próbuję użyć gprof do profilowania aplikacji c++, którą napisałem, ale nie mogę na całe życie rozgryźć, jak ją pobrać i zainstalować. Wygooglowałem wszystko, co przychodzi mi do głowy i nie mogę nawet znaleźć linku do pobierania. Niech ktoś mi pomoże!
3 answers
Wygląda na to, że gprof ma dwa składniki. Jeden z nich jest częścią samego kompilatora GCC, wywoływanego przez użycie argumentu-pg. Drugim jest polecenie gprof, które najwyraźniej jest częścią GNU binutils. Zostawię ci to, aby dowiedzieć się, jak zainstalować GCC i binutils na OSX...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-26 19:34:21
Ponieważ gprof nie działa w tej chwili na OS X, użyj Google Performance Tools , znanego teraz jako gperftools.
Również gcov działa "po wyjęciu z pudełka", jeśli masz zainstalowany gcc.
$ gcc -fprofile-arcs -ftest-coverage your_program.c
$ a.out
$ gcov your_program.c
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-21 03:26:42
Nie znalazłem rozwiązania dla systemu MacOS dla gprof
i gcov
nie działa dla mnie, ale gperftools
(Narzędzia wydajności Google) działają. Oto jak zainstalować je na MacOS:
brew install google-perftools graphviz ghostscript
brew link --overwrite ghostscript
Następnie uruchom profiler w programie:
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
Możesz znaleźć więcej opcji dla gperftools
tutaj . Na koniec otwórz plik program_name.pdf
w przeglądarce PDF, takiej jak Podgląd, aby cieszyć się fantazyjnym wyjściem graphviz
.
Oczywiście uruchamianie profilera w programie można bardzo łatwo zautomatyzować za pomocą skryptu Bash, ponieważ istnieje tylko jeden parametr program_name
, a lokalizacja biblioteki współdzielonej jest stała. Oto przykładowy skrypt o nazwie profile.sh
, który robi dokładnie to samo, ale zawiera kompilację i dodaje drugą zmienną, dzięki czemu można kompilować .cpp
pliki o innej nazwie:
#!/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"
Następnie zmodyfikuj uprawnienia, aby mogły być uruchamiane z dowolnego folderu:
chmod 755 profile.sh
Skrypt można wywołać z linii poleceń w następujący sposób, automatyzując cały proces:
./profile.sh program_name cpp_name
Możesz chcieć oddzielić kroki kompilacji i profilowania, co jest dość proste, usuwając linię g++-7
w skrypcie powłoki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 04:23:27