问题标签 [callgrind]

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 回答
1395 浏览

c++ - 如何确定 valgrind/callgrind 杀死进程的原因

我已经为我正在使用的数据库基础架构编写了一个多线程压力测试,并且我正在尝试使用 callgrind 对其进行分析。该程序在 valgrind 之外完美执行并提供预期的结果。

但是,当在valgrind --tool=callgrind程序下运行它时,它会执行很短的时间,然后停止,valgrind 会报告Killed它最后一次输出到标准输出。

有没有办法让我确定为什么 valgrind 杀死了我的任务?


在遵循 phd 的建议后:它确实会被杀死valgrind --tool=none,但是,我不完全确定如何分析我收到的消息,我的线程中似乎有很多sigvgkill信号。第一个例子在这里:

0 投票
0 回答
47 浏览

arm - Valgrind 显示奇怪的“if”语句循环消耗

我在一个程序上运行 valgrind / callgrind,当我查看 kachegrind 中的源代码选项卡以找出循环在特定文件中花费的位置时,它在一行上显示了很大比例(63%)的时间对我来说没有意义——它只有一个“if”语句。我认为它实际上是指“if”语句上方计算量大的行。

下面屏幕截图中的变量类型是 float 和 int 的组合 - 我尝试将所有变量转换为 float,但我得到相同的高 % 数字,但行号更改为上面的几行(同样良性寻找代码,即赋值或条件)

报告的行号可能有问题吗?

kcachegrind 截图

0 投票
4 回答
3259 浏览

c++ - Kcachegrind。仅显示我的代码中的函数

我想分析我的代码。所以我这样做:

现在我有这样的kcachegrind窗口:

在此处输入图像描述

有很多核心函数和库函数,但是如何设置valgrindkcachegrind跟踪代码中的函数(当然,这些函数调用库函数)?

预期的输出是这样的:

0 投票
4 回答
2330 浏览

c++ - 如何分析 C/C++ 应用程序中内存访问所花费的时间?

一个函数在应用程序中花费的总时间可以大致分为两个部分:

  1. 实际计算所花费的时间 (Tcomp)
  2. 内存访问所花费的时间 (Tmem)

通常,分析器提供函数花费的总时间的估计。是否可以根据上述两个组件(Tcomp 和 Tmem)估算所花费的时间?

0 投票
1 回答
1676 浏览

c++ - 如何从命令行在 OSX 上的 callgrind 输出中获取有意义的函数名称?

目标:我希望能够分析 callgrind(以及后来的 cachegrind)的输出,并希望在使用 callgrind_annotate CLI 时看到有意义的变量名称。

先前研究:我知道 Valgrind 中的 dsym 标志(http://valgrind.org/docs/manual/manual-core.html),并且相信我了解调试符号在 osx 上的工作原理(LLDB 未显示源代码)。我在这个网站上看到的关于这个问题的少数提及要么没有得到答复,要么是没有包含 -g 标志的情况。

理论(可能是错误的......):基于 valgrind 输出中的“dym =”行,我想知道 valgrind 是否正在努力寻找 dsym 目录的路径。

我能给你什么数据?

给定以下源代码:

使用了以下命令行指令:

nm -pa 位用于确保存在调试映射信息。我还在 dSYM 文件夹上运行了 dwarfdump 以确保存在调试信息。我看到“没有为 badprime.cpp 收集信息”这一行作为注释命令的输出。

编译器信息:

瓦尔格林信息:

valgrind 的初始详细输出:

callgrind_annotate 输出:

我将非常感谢可以提供的任何帮助。

0 投票
1 回答
3064 浏览

profiling - kcachegrind 无法打开 callgrind 文件

我正在使用 callgrind 来分析一小段代码。Callgrind 输出文件生成良好,它们的内容看起来不错,但我无法使用 kcachegrind 打开它们:我收到以下错误消息:

无法打开文件“callgrind.out.4953”。检查它是否存在并且您有足够的权限来阅读它。

我对它们所在的文件和目录拥有所有权限,但有同样的问题。此外,它还可以与同一工作区中的其他文件夹中的其他项目一起使用。我还指出,在这两种情况下,进程都会正确终止。

0 投票
1 回答
84 浏览

multithreading - 使用 vagrind 使用调用图分析函数之间的数据依赖关系

我正在尝试为多核 ARM 处理器进行多线程编程。我使用 valgrind 进行分析。我可以从主函数下的函数调用调用图中看到。如何解释函数之间的数据依赖关系?我的两个函数是从主函数分支出来的,我认为这意味着它们之间没有数据依赖关系并且可以并行运行,但事实并非如此。有人可以举个例子或在哪里知道吗?

0 投票
1 回答
214 浏览

c++ - 在 callgrind 中调整分辨率

抱歉,我无法创建一个最小的完整示例,因为该问题仅发生在相对较大的程序中,而且我不确定这甚至是一个“错误”本身,而不是对 callgrind 分析应该完成的误解。

我有一个大程序,它的运行时间被分成大约 50 50 成 2 个连续的部分。第一部分主要是文件读取,第二部分主要是计算。

我期望的函数调用顺序如下:

调用范围,被调用者

主要 Part1_main

Part1_main Part1_main_subfunction_1

Part1_main Part1_main_subfunction_2

Part1_main Part1_main_subfunction_3

主要 Part2_main

Part2_main Part2_main_subfunction_1

Part2_main Part2_main_subfunction_2

..

..

当我在代码上运行 callgrind (然后在 osx 上的 kcachegrind 中查看结果)时,我得到了一些关于函数调用的结果,这些结果与您所期望的大致相同,除了一件事:第二部分中没有函数调用的解析:配置文件输出在质量上与

函数,Pct_time,Self_time

Part1_main 50 4

Part2_main 50 50

Part1_main_subfunction_1 20 4

Part1_main_subfunction_2 15 5

..

..

..

第二个功能的自我时间非常高的解释是什么?分析器似乎认为它没有调用任何其他函数。我认为函数 2 中的所有内容都有可能(尽管不太可能)是内联的,所以也许不应该有任何进一步的解决方案。如果这是真的,这不会产生非常有趣的分析结果。

如果您遇到这种类型的事情,如何强制分析器显示进一步的分辨率?或者,如果我的直觉是错误的,还有什么可能导致这种行为?

根据 callgrind 网站的说明,我正在使用 -g 标志进行编译,并启用了优化。

0 投票
1 回答
1159 浏览

arm - valgrind 不适用于我在 linux ubuntu 16.04 中的 32 位可执行文件

我正在尝试在我的 32 位可执行文件(示例)上运行 valgrind 工具,我在 linux Ubuntu 主机 16.04(64 位)下构建,但它无法运行,错误:错误 ELF。

示例应用程序构建为在 arm32 中运行,在我的主机 linux 机器中交叉编译。

这是我运行的命令。

我运行了 memcheck 工具,但也失败了。

然后我做了什么,我导出了 valgrind lib 路径,但这没有帮助+

我只是我的 lib 目录,我找到了整个列表并找到了 callgrind,所有的库都在那里。

不知道出了什么问题以及如何在我的可执行文件上使用 valgrind。

任何帮助,不胜感激。

0 投票
2 回答
3136 浏览

c++ - 带有循环检测的 Callgrind 性能分析

我第一次尝试使用 Callgrind/Kcachegrind 来分析我的 C++ 应用程序,我注意到需要更多时间的两个函数是:

  1. < 循环 1 > (50% 自我) 和
  2. do_lookup_x (15% 自我)

现在,根据我的理解,周期 1 与递归调用函数所用时间的估计有关,但我不太清楚我应该如何解释在这里花费的如此长的时间。如果有一些周期,我想看看哪个函数被调用得更频繁,最后占用更多的 CPU 时间。如果我禁用循环检测(视图->循环检测),那么循环 1 会消失,但“自我”时间总计约为 60%,我不确定这是最好的做法。关于 do_lookup_x 我完全一无所知......

你能澄清一下我应该如何解释这些结果吗?

提前致谢。