问题标签 [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 投票
1 回答
236 浏览

python - 在 callgrind 中停止检测

我正在生成多个进程并在每个进程中启动检测。当我试图在进程退出之前停止检测时,检测程序似乎挂在 shell 中,好像进程已经完成并且它没有停止检测的进程。这是代码:

如何解决悬挂问题?我真的需要停止仪器吗?

0 投票
2 回答
3797 浏览

linux - 如何在 Kcachegrind 中查看源代码

我已经能够从终端分析我的程序的 callgrind 详细信息......

但是,当我想使用“KcacheGrind”查看图形工具中的结果时......我无法访问默认情况下应该在 Source_Code 选项卡下可用的 mysource 代码。

谁能指出需要做什么?

0 投票
1 回答
929 浏览

profiling - Callgrind 配置文件格式包含/自费

我正在尝试了解 Callgrind 配置文件格式。我找到了网上的描述

在遇到“扩展示例”之前,我以为我理解得很好:

描述如下:可以看到,在“main”中,仅执行了第 16 行的代码,其中还调用了其他函数。“main”的包含成本是 420,它是自身成本 20 和调用中花费的成本之和。

当只有 func2 的 self 成本已经是 700 时,'main' 的包含成本怎么可能是 420?

0 投票
0 回答
697 浏览

c++ - 对分析结果感到困惑

我已经用“ -g -O2”构建了我的程序并运行了valgrind+cachegrind。我不确定如何解释输出。这是输出:

http://daviddoria.com/Uploads/callgrind.CacheMisses

我的“整个程序”是InpaintingAlgorithm“主要”的 98.4% 的功能。到目前为止,一切都很好。现在看看InpaintingAlgorithm92.9% 的被调用者InpaintingAlgorithmLinearSearchKNNProperty::operator(). 这是我的“内循环”,我再次期待大量的时间花在这里。

现在这是我感到困惑的地方。看看 的被调用者LinearSearchKNNProperty::operator(),真的什么都没有??最大的函数只有7.64%,其余的<0.25%。我不明白所有被调用者的总和如何只增加了大约 8%。剩下的 92% 在哪里?(大概是我要找的东西让它跑得更快!)

如果有人能指出我在阅读这些结果时的错误,我将不胜感激!

0 投票
3 回答
1721 浏览

c++ - Callgrind 内联函数

我正在分析我的代码,我已经找到了其中最昂贵的部分。然而,它发生在一个内联函数中。为了衡量影响,我强制该函数不被内联。

现在我想报告准确的分析数据。如果没有内联,我们会有很大的开销(该函数基本上是一个循环,但它被非常非常频繁地调用)。

我想知道是否可以指示 valgrind 将代码的特定部分视为一个函数本身(如 makros CALLGRIND_START_INSTRUMENTATION、CALLGRIND_STOP_INSTRUMENTATION)而不强制函数不被内联。

0 投票
1 回答
463 浏览

c++ - 调试:跟踪(和区分)同一程序的两个版本的函数调用树

我正在重写 C++ 命令行程序中的一些代码。

我更改了它使用的低级数据结构,新版本毫无问题地通过了所有测试(很多),并且我从新版本和旧版本中都得到了正确的输出......不过,当给出某些输入时,他们给出不同的行为。

切入正题:作为一个大项目,我不知道如何追踪执行流程何时出现分歧,所以......有没有办法追踪函数调用树(可能不包括std调用)以及,我不知道,源文件中的行号和源名称?也许一些 gcc 或宏功夫?

我需要一个 Linux 解决方案,因为这是程序运行的地方。

0 投票
2 回答
1830 浏览

apache - 如何使用callgrind调试单进程模式调用Apache2

我一直试图让 apache 在信号处理/调试模式下运行,以便将 callgrind 与它一起使用,并有一个简单的单一进程用于调试。

有没有人有在单进程模式下运行 apache 的经验?

我试过跑步httpd -X。这可以用单个进程启动 apache,(很好)但是当像这样运行时,还没有找到一种干净的方法来再次关闭它们。唯一可行的方法是kill -9. 这也吹走了任何调试输出,所以在使用 callgrind 时不会让我更进一步。对于那些感兴趣的人,我正在运行的完整命令是:

任何想法表示赞赏。
谢谢

0 投票
2 回答
7897 浏览

c++ - Callgrind:分析我的代码的特定部分

我正在尝试通过消除我不关心的噪声和计算来分析(使用 Callgrind)我的代码的特定部分。这是我想做的一个例子:

我的用例是回归测试,我想确保所讨论的方法仍然足够快(自上次实施以来,额外指令不到 10%)。这就是为什么我想要更清晰的输出形式 Callgrind。(我需要一个 for 循环来处理大量数据,以便对我想要分析的方法的行为有一个很好的估计)

我的第一次尝试是将代码更改为:

添加 Callgrind 宏来控制检测。我还添加了 --instr-atstart=no 选项,以确保我只分析我想要的代码部分......

不幸的是,当我开始使用 callgrind 启动我的可执行文件时,使用这种配置,它永远不会结束......这不是缓慢的问题,因为完整的仪器运行持续不到一分钟。

我也试过

(或 --toggle-collect="myMethod" 选项)但是 Callgrind 没有任何调用就返回给我一个日志(KCachegrind 像雪一样白:(并且说零指令......)

我是否正确使用了宏/选项?知道我需要改变什么才能获得预期的结果吗?

0 投票
1 回答
535 浏览

linux - 我可以依靠 valgrind/callgrind 的绝对成本来衡量和比较不同的实现吗?

现在我正在使用 valgrind/callgrind 来衡量和比较不同的算法实现。假设一个算法有两种实现,处理链如下:

这两种实现的区别在于第三个过程,其中执行了两种不同的算法实现。为了看看哪个实现更好,我现在在 kachegrind 的帮助下使用 valgrind/callgrind。

据我所知,ifAlgorithm_imp_1()比 更有效Algorithm_imp_2(),它的两个指标:一个是已用于运行程序的绝对时间,另一个是第三个程序所用时间的百分比,应该更小。但是,我使用 valgrind 获得的结果非常令人困惑:

由于这两种方法的整个过程都是一样的,除了第三部分,如果第三部分消耗的时间百分比很小,我们可以预计运行程序的总时间也应该很小。然而,我们在上面观察到的是矛盾的。我想知道我的分析有什么问题。谢谢!

0 投票
1 回答
1057 浏览

c++ - 相当于 gprof/callgrind 的分析库

我正在寻找具有分析功能的 C/C++ 库,例如gprof、 或callgrind.

更准确地说,我希望它的输出与callgrind发布的内容相同,以便将其传递给第三方工具,例如 KCacheGrind。

我们的想法是能够基于这个库设计一个方面,并将其插入我们团队正在开发的几个应用程序中。