如何在OS X上安装gprof

zal*_*loo 13 c++ profiling install gprof

我正在尝试使用gprof来编写我编写的c ++应用程序,但我无法弄清楚如何下载和安装它.我用谷歌搜索了我能想到的一切,甚至找不到下载链接.有人请帮忙!

feu*_*ene 8

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

  • 似乎gprof不理解Mach-O可执行文件,因此不能用于配置OS X程序. (4认同)
  • @Mohan只是这样做:`mv $(类型gcc)$(类型gcc)-apple && brew install gcc && brew install binutils`. (2认同)

Ada*_*son 6

我没有找到适用于我的 MacOS 解决方案gprof并且gcov对我不起作用,但是gperftools(Google 性能工具)确实有效。以下是在 MacOS 上安装它们的方法:

brew install google-perftools graphviz ghostscript gv
brew link --overwrite ghostscript
Run Code Online (Sandbox Code Playgroud)

接下来,在程序上运行探查器:

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
Run Code Online (Sandbox Code Playgroud)

您可以gperftools 在此处找到更多选项。最后,program_name.pdf在 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"
Run Code Online (Sandbox Code Playgroud)

接下来,修改权限,使其可以从任何文件夹运行:

chmod +x profile.sh
Run Code Online (Sandbox Code Playgroud)

可以从命令行调用脚本,如下所示,自动化整个过程:

./profile.sh program_name cpp_name
Run Code Online (Sandbox Code Playgroud)

您可能希望将编译和分析步骤分开,这很容易通过删除g++-7shell 脚本中的行来完成。

  • 现在可以简单地执行 `brew install gperftools` (2认同)
  • 这些步骤对我不起作用,请参阅https://github.com/gperftools/gperftools/issues/1292;`pprof` 失败并显示:错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool-classic:无法打开文件:/usr/lib/liboah.dylib(没有这样的文件)文件或目录) (2认同)