我在这个话题上发现了几个矛盾的答案。 This博客文章需要libuwind,但是在Mac OS X上不起作用。我在代码中包含了#include <google/profiler.h>,但是我的编译器(g++)找不到该库。我通过自制软件安装了gperftools。另外,我发现this stackoverflow问题显示了这一点:



运行该命令(不执行任何先前的步骤)可得到以下信息:

[hidden]$ pprof --text ./a.out cpu.profile
Using remote profile at ./a.out.
Failed to get the number of symbols from http://cpu.profile/pprof/symbol

为什么它尝试访问我机器上的一个互联网站点并访问他/她的一个本地文件?

尝试将lib profiler与g++进行空运行链接会得到以下信息:
[hidden]$ g++ -l libprofiler
ld: library not found for -llibprofiler
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我看过手册页,帮助选项文本,官方在线指南,博客文章和许多其他资源。

我现在很困惑。有人可以帮我使用gperftools吗?

我与@osgx交谈的结果是this script。我试图清理一下。它也可能包含很多不必要的选项。

最佳答案

dudefrommangalore撰写的博客文章https://dudefrommangalore.wordpress.com/2012/02/09/profiling-c-code-using-google-performance-tools/“使用Google Performance Tools剖析C++代码” 2012错过了关键步骤。

您应该将您的程序(要进行概要分析)与gperftools库的cpu profiler库链接。

查看官方手册:http://goog-perftools.sourceforge.net/doc/cpu_profiler.html,“在库中链接”部分



第二步是收集配置文件,在启用概要分析的情况下运行代码。在linux世界中,这是通过在运行之前设置控制环境变量CPUPROFILE来完成的:

CPUPROFILE=name_of_profile ./program_to_be_profiled

第三步是使用pprof(ubuntu world中的google-pprof)。检查是否生成了非空的name_of_profile配置文件;如果没有这样的文件,pprof将尝试进行远程配置文件获取(您会看到这种尝试的输出)。
pprof ./program_to_be_profiled name_of_profile

10-06 01:53