问题标签 [gperftools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
619 浏览

linux - GPerfTools/pprof:虚线是什么意思?

当您在 GPerfTool 的 pprof 命令中使用“--gv”选项时,您会得到一个非常漂亮的图形。耶。

线条可以是粗、细、虚线或实线。我认为厚/薄是基于该行后面的示例条目数。

但是我既没有弄清楚也没有找到关于虚线意味着什么的文档。我目前正在通过 pprof 代码,但坦率地说,这是一种非常愚蠢的方式来弄清楚它的含义。因此,除了回答虚线的含义之外,您能否指出一些给出 pprof gv 格式图例的文档?

这个(http://goog-perftools.sourceforge.net/doc/cpu_profiler.html)必须是过时的,因为它没有提到虚线格式......让我担心它可能已经过时了日期。

0 投票
3 回答
3319 浏览

c - 无法分析 gperftools profiler 的输出(配置文件)

我正在使用gperftools来分析我的 C 代码。结果我无法使用pprof应用程序分析配置文件。

我错了什么?文件是什么profile.ftab

0 投票
2 回答
189 浏览

c++ - gperftools + apache + fcgi ,它不会写入文件

我正在尝试分析一个在with中fcgi运行的应用程序(C++)。所以是 Centos 6 x86_64。apachemod_fascgiperftools

问题如下。根据gperftools 文档

“出于安全原因,CPU 分析不会写入文件——因此不能用于 setuid 程序。”

Apache 必须以 启动root,然后使用 setuid 以apache作为用户使用,因此使用setuid. 然后gperftools不会写入文件。并且运行 Apache asroot也被禁用。

有什么解决办法吗?

到目前为止,我想到了 3 个解决方案:

  • 在应用程序中创建一个测试来模拟一些请求和模拟 FCGI 类。
  • 使用标志 -DBIG_SECURITY_HOLE 重新编译 Apache 以允许以 root 身份运行 apache。
  • 重新编译 gperftools 去掉对 suid 的检查。
0 投票
0 回答
165 浏览

c++ - 为什么我在调用图中看到使用 gperftools 不存在的边?

给定以下调用 f 或 g 的代码

我编译

并运行

然后生成一个gif

我得到以下在此处输入图像描述

但是,我有从 f 到 g、f 到自身以及 g 到自身的边。没有优化(我再次尝试使用 -O0 以确保),并且我也尝试过使用和不使用 -lunwind。

为什么探查器认为 f 调用 g (以及它本身有时)?如何正确使用分析器?

0 投票
1 回答
977 浏览

c++ - gperftools cpuProfiler 在分析由 ARM 设备创建的文件时看不到符号

我想分析在 ARM 设备中运行的 C++ 应用程序。我运行了我的应用程序并使用 ProfilerStart("googleProfBL.prof") 对其进行了分析,因此生成了文件。当我从本地计算机中的 ARM 设备打开文件时,我得到以下信息:

./pprof --text --add_lib=libraryIwanttoDebug.so BinaryThatLoadsThatLibrary googleProfBL.prof Using local file /home/genius/PresControler/src-build-target/deploy/NavStartup. Using local file ../traces/googleProfBL.prof. Warning: address ffffffffffffffff is longer than address length 8 Warning: address ffffffffffffffff is longer than address length 8 Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Total: 5347 samples 258 4.8% 4.8% 258 4.8% 0x76d4c276 144 2.7% 7.5% 144 2.7% 0x76da2cc4 126 2.4% 9.9% 126 2.4% 0x5d0f8284 114 2.1% 12.0% 114 2.1% 0x76d27386 64 1.2% 13.2% 64 1.2% 0x76dba2dc 53 1.0% 14.2% 53 1.0% 0x76dba1f4 ...

so 库是在调试模式下编译的(没有被剥离),我不知道为什么我没有得到符号。

我试过这个:

./pprof --text --add_lib=aFileOfTheLibrary.o BinaryThatLoadsThatLibrary googleProfBL.prof Looks like I got a couple of symbols. Using local file /home/genius/PresControler/src-build-target/deploy/NavStartup. Using local file ../traces/googleProfBL.prof. Warning: address ffffffffffffffff is longer than address length 8 Warning: address ffffffffffffffff is longer than address length 8 Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Hexadecimal number > 0xffffffff non-portable at ./pprof line 4475. Total: 5347 samples 258 4.8% 4.8% 258 4.8% 0x76d4c276 144 2.7% 7.5% 144 2.7% 0x76da2cc4 126 2.4% 9.9% 126 2.4% 0x5d0f8284 114 2.1% 12.0% 114 2.1% 0x76d27386 64 1.2% 13.2% 64 1.2% 0x76dba2dc 53 1.0% 14.2% 53 1.0% 0x76dba1f4 50 0.9% 15.1% 50 0.9% 0x76dbf1bc 34 0.6% 15.8% 34 0.6% 0x72eae1b4 30 0.6% 16.3% 30 0.6% 0x76d8a32a 30 0.6% 16.9% 30 0.6% 0x76d8e2c0 .. 0 0.0% 100.0% 7 0.1% std::forward_as_tuple <- I couldn't see that before!!! 我尝试为我拥有的每个 .o 执行 --add_lib ,但我没有得到更多符号。为什么我没有得到符号,这有什么关系吗,因为我正在使用英特尔检查结果并使用 ARM 获取它们?我怎么能解决这个问题?有什么帮助吗???谢谢!!!

0 投票
1 回答
4088 浏览

profiling - 将 pprof 与 gperftools 一起使用会导致 curl 错误

所以我一直在做以下事情:

我不确定这里发生了什么,因为这是他们在这里展示的示例之一:http: //google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html

现在我知道ls实际上并没有信息,但我也知道在这种情况下它不应该给我关于 curl 的错误,它应该是别的东西。我在这里做错了什么?

我也尝试对我创建的示例程序执行此操作(例如:pprof --callgrind /home/user/csteifel/testing2/X86_64_DEBUG/el6/wtf ~/testing2/prof.out > callgrind.out我收到类似的错误:

0 投票
1 回答
267 浏览

c++ - C++ 库名称中的“f”后缀是什么意思,如何加载它?

我正在使用 gperftools v2.3rc 并希望使用改进的线程分析功能。发行说明部分指出:

现在在 Linux 上实现了新的 cpu 分析模式。它为单独的线程设置单独的分析计时器。...如果同时加载了librt.f并设置了 CPUPROFILE_PER_THREAD_TIMERS 环境变量,则启用 [It] 。...

我的 C++ 应用程序与 librt.so(-lrt — POSIX.1b 实时扩展库)链接,但我以前没有听说过带有 .f 后缀的库。.f 是什么意思,我在哪里可以找到这个库,以及如何在我的应用程序中加载它?

0 投票
1 回答
458 浏览

linux - gperftools:修改makefile以安装在不同的文件夹中?

我正在安装 gperftools:

https://code.google.com/p/gperftools/

一切正常,我看到项目链接到 /usr/local/lib

相反,我想将库放在我的项目本地的文件夹中。

这背后的原因是我将项目放在不同的机器上,我只需要链接 libprofiler 和 libtcmalloc 库,而不是 pprof 等附带的整个包。

这些机器也有不同的架构,所以我实际上需要构建到那个目录中,而不是复制粘贴

这是一件微不足道的事情吗?

0 投票
1 回答
1620 浏览

configure - 如何将 gperftools 构建为静态库?

我在 gperftools 的安装文件中读到它可以构建为静态库。我怎么能做到呢?

根据我对静态库的理解:我需要将其配置为创建一个包含 .o 文件的 .a 文件,而不是共享库的存根。但是我完全不知道要传递给 ./configure 什么来获得这种行为。我可以使用 ./configure --prefix=PATH_TO_SOME_LOCATION 构建我的 gperftools,并且我得到一个整洁的 .so 文件小文件夹

0 投票
1 回答
2020 浏览

c - C gperftools - 分析 C 代码

我正在尝试为我使用 gperftools 的代码生成分析(逐行源代码)。

为什么 pprof 声明“没有要打印的节点”?