问题标签 [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.
python - 在 callgrind 中停止检测
我正在生成多个进程并在每个进程中启动检测。当我试图在进程退出之前停止检测时,检测程序似乎挂在 shell 中,好像进程已经完成并且它没有停止检测的进程。这是代码:
如何解决悬挂问题?我真的需要停止仪器吗?
linux - 如何在 Kcachegrind 中查看源代码
我已经能够从终端分析我的程序的 callgrind 详细信息......
但是,当我想使用“KcacheGrind”查看图形工具中的结果时......我无法访问默认情况下应该在 Source_Code 选项卡下可用的 mysource 代码。
谁能指出需要做什么?
profiling - Callgrind 配置文件格式包含/自费
我正在尝试了解 Callgrind 配置文件格式。我找到了网上的描述
在遇到“扩展示例”之前,我以为我理解得很好:
描述如下:可以看到,在“main”中,仅执行了第 16 行的代码,其中还调用了其他函数。“main”的包含成本是 420,它是自身成本 20 和调用中花费的成本之和。
当只有 func2 的 self 成本已经是 700 时,'main' 的包含成本怎么可能是 420?
c++ - 对分析结果感到困惑
我已经用“ -g -O2
”构建了我的程序并运行了valgrind
+cachegrind。我不确定如何解释输出。这是输出:
http://daviddoria.com/Uploads/callgrind.CacheMisses
我的“整个程序”是InpaintingAlgorithm
“主要”的 98.4% 的功能。到目前为止,一切都很好。现在看看InpaintingAlgorithm
92.9% 的被调用者InpaintingAlgorithm
是LinearSearchKNNProperty::operator()
. 这是我的“内循环”,我再次期待大量的时间花在这里。
现在这是我感到困惑的地方。看看 的被调用者LinearSearchKNNProperty::operator()
,真的什么都没有??最大的函数只有7.64%,其余的<0.25%。我不明白所有被调用者的总和如何只增加了大约 8%。剩下的 92% 在哪里?(大概是我要找的东西让它跑得更快!)
如果有人能指出我在阅读这些结果时的错误,我将不胜感激!
c++ - Callgrind 内联函数
我正在分析我的代码,我已经找到了其中最昂贵的部分。然而,它发生在一个内联函数中。为了衡量影响,我强制该函数不被内联。
现在我想报告准确的分析数据。如果没有内联,我们会有很大的开销(该函数基本上是一个循环,但它被非常非常频繁地调用)。
我想知道是否可以指示 valgrind 将代码的特定部分视为一个函数本身(如 makros CALLGRIND_START_INSTRUMENTATION、CALLGRIND_STOP_INSTRUMENTATION)而不强制函数不被内联。
c++ - 调试:跟踪(和区分)同一程序的两个版本的函数调用树
我正在重写 C++ 命令行程序中的一些代码。
我更改了它使用的低级数据结构,新版本毫无问题地通过了所有测试(很多),并且我从新版本和旧版本中都得到了正确的输出......不过,当给出某些输入时,他们给出不同的行为。
切入正题:作为一个大项目,我不知道如何追踪执行流程何时出现分歧,所以......有没有办法追踪函数调用树(可能不包括std调用)以及,我不知道,源文件中的行号和源名称?也许一些 gcc 或宏功夫?
我需要一个 Linux 解决方案,因为这是程序运行的地方。
apache - 如何使用callgrind调试单进程模式调用Apache2
我一直试图让 apache 在信号处理/调试模式下运行,以便将 callgrind 与它一起使用,并有一个简单的单一进程用于调试。
有没有人有在单进程模式下运行 apache 的经验?
我试过跑步httpd -X
。这可以用单个进程启动 apache,(很好)但是当像这样运行时,还没有找到一种干净的方法来再次关闭它们。唯一可行的方法是kill -9
. 这也吹走了任何调试输出,所以在使用 callgrind 时不会让我更进一步。对于那些感兴趣的人,我正在运行的完整命令是:
任何想法表示赞赏。
谢谢
c++ - Callgrind:分析我的代码的特定部分
我正在尝试通过消除我不关心的噪声和计算来分析(使用 Callgrind)我的代码的特定部分。这是我想做的一个例子:
我的用例是回归测试,我想确保所讨论的方法仍然足够快(自上次实施以来,额外指令不到 10%)。这就是为什么我想要更清晰的输出形式 Callgrind。(我需要一个 for 循环来处理大量数据,以便对我想要分析的方法的行为有一个很好的估计)
我的第一次尝试是将代码更改为:
添加 Callgrind 宏来控制检测。我还添加了 --instr-atstart=no 选项,以确保我只分析我想要的代码部分......
不幸的是,当我开始使用 callgrind 启动我的可执行文件时,使用这种配置,它永远不会结束......这不是缓慢的问题,因为完整的仪器运行持续不到一分钟。
我也试过
(或 --toggle-collect="myMethod" 选项)但是 Callgrind 没有任何调用就返回给我一个日志(KCachegrind 像雪一样白:(并且说零指令......)
我是否正确使用了宏/选项?知道我需要改变什么才能获得预期的结果吗?
linux - 我可以依靠 valgrind/callgrind 的绝对成本来衡量和比较不同的实现吗?
现在我正在使用 valgrind/callgrind 来衡量和比较不同的算法实现。假设一个算法有两种实现,处理链如下:
这两种实现的区别在于第三个过程,其中执行了两种不同的算法实现。为了看看哪个实现更好,我现在在 kachegrind 的帮助下使用 valgrind/callgrind。
据我所知,ifAlgorithm_imp_1()
比 更有效Algorithm_imp_2()
,它的两个指标:一个是已用于运行程序的绝对时间,另一个是第三个程序所用时间的百分比,应该更小。但是,我使用 valgrind 获得的结果非常令人困惑:
由于这两种方法的整个过程都是一样的,除了第三部分,如果第三部分消耗的时间百分比很小,我们可以预计运行程序的总时间也应该很小。然而,我们在上面观察到的是矛盾的。我想知道我的分析有什么问题。谢谢!
c++ - 相当于 gprof/callgrind 的分析库
我正在寻找具有分析功能的 C/C++ 库,例如gprof
、 或callgrind
.
更准确地说,我希望它的输出与callgrind
发布的内容相同,以便将其传递给第三方工具,例如 KCacheGrind。
我们的想法是能够基于这个库设计一个方面,并将其插入我们团队正在开发的几个应用程序中。