我正在尝试使用gprof来编写我编写的c ++应用程序,但我无法弄清楚如何下载和安装它。我用谷歌搜索了我能想到的一切,甚至找不到下载链接。有人请帮忙!
答案 0 :(得分:9)
gprof似乎有两个组成部分。一个是GCC编译器本身的一部分,使用-pg参数调用。另一个是gprof命令,apparently是GNU binutils的一部分。我将留给您了解如何在OSX上安装GCC和binutils ......
答案 1 :(得分:3)
由于gprof目前无法在OS X上运行,因此请使用Google Performance Tools,现在称为gperftools。
同样gcov可以正常使用#34;开箱即用"如果你安装了gcc。
$ gcc -fprofile-arcs -ftest-coverage your_program.c
$ a.out
$ gcov your_program.c
答案 2 :(得分:2)
我找不到gprof
的MacOS解决方案而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
here的更多选项。最后,打开PDF查看器中的program_name.pdf
文件,例如预览,以享受花哨的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
您可能希望将编译和分析步骤分开,这很容易通过删除shell脚本中的g++-7
行来完成。