如何在OS X上安装gprof

How to install gprof on OS X

本文关键字:安装 gprof OS      更新时间:2023-10-16

我正在尝试使用gprof来配置我编写的c++应用程序,但我无法弄清楚如何下载和安装它。我用谷歌搜索了我能想到的所有东西,甚至找不到下载链接。谁来帮帮我!

似乎gprof有两个组成部分。一个是GCC编译器本身的一部分,通过使用-pg参数调用。另一个是gprof命令,它显然是GNU binutils的一部分。我将把如何在OSX上安装GCC和binutils留给你去弄清楚…

我没有找到MacOS解决方案的gprofgcov不适合我,但gperftools(谷歌性能工具)做的工作。下面是如何在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的更多选项。最后,在PDF查看器(如Preview)中打开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行来实现。

由于gprof目前不能在OS X上工作,请使用Google性能工具,现在称为gperftools。

如果你安装了gcc, gcov也可以"开箱即用"。

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