问题标签 [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 回答
851 浏览

profiling - valgrind 报告 malloc 断言失败,memcheck 不报告任何错误

Callgrind 报告了 malloc 中的断言冲突,尽管 memcheck 和通常的运行没有显示任何错误:

stp: malloc.c:3096: sSYSMALLOc: 断言`(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof (size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' 失败。

运行命令是:

taskset -c 7 valgrind --main-stacksize=256768768 --tool=callgrind no-asserts-no-cbitp/stp ~/profiling-stp/python-samples-without-const-arr/*.smt

该程序是使用 -O2 -g 选项构建的。在运行 valgrind 之前,会调用“ulimit -s unlimited”。

是否可以获得 Callgrind 报告的错误的堆栈跟踪?如果没有 - 想法如何调试?

谢谢!

0 投票
1 回答
2144 浏览

profiling - 在 kcachegrind 中查看 gprof 输出

如何在 kcachegrind 中查看 gprof 的输出?这里是从 gcc 的 gmon.out 到 callgrind.out 的转换器吗?

0 投票
1 回答
1291 浏览

valgrind - Kcachegrind/callgrind 对于调度程序功能不准确?

我有一个模型代码,kcachegrind/callgrind 报告了奇怪的结果。这是一种调度程序功能。调度员从 4 个地方调用;每个调用都说明要运行哪个实际do_J函数(因此first2只会调用do_1等等do_2

源代码(这是实际代码的模型)

编译gcc -O0; 用valgrind --tool=callgrind; kcache 用kcachegrind和研磨qcachegrind-0.7

这是应用程序的完整调用图。do_J 的所有路径都通过调度程序,这很好(do_1 被隐藏得太快了,但它真的在这里,只是留给 do_2)

满的

让我们重点do_1看看,谁叫它(这张图是不正确的):

在此处输入图像描述

这很奇怪,我认为,只有first2outer2调用do_1但不是全部。

这是 callgrind/kcachegrind 的限制吗?如何获得带有权重的准确调用图(与每个函数的运行时间成正比,无论有无子函数)?

0 投票
2 回答
864 浏览

valgrind - 关于 callgrind 输出

我正在使用 http://valgrind.org/docs/manual/cl-manual.html 来分析我的应用程序。但我有一个问题,它是否显示

  1. 该函数内部消耗的时间

或者

  1. 在该函数调用中消耗的 CPU

我猜是目前它在 curl connect 中显示 90% 的使用率。我认为这是 i/o 绑定过程。

所以我认为它显示了该函数调用中消耗的时间。

0 投票
1 回答
2448 浏览

c++ - 如何使用 Kcachegrind 理解 callgrind 的输出

在分析日志时,Kcachegrind 显示 %of inclusive 为 13.92%。如常见问题解答 Q:1中所述,它不应​​该接近 100%吗?

这是配置文件日志的屏幕截图

在此处输入图像描述

0 投票
1 回答
2219 浏览

c++ - Valgrind 是否调用grind 使用总时间或“执行时间”来创建数据

我有一个问题,我的应用程序随线程数线性扩展(想想 800 个线程在双核 CPU 上的性能是 400 个线程的两倍)。我的直觉告诉我线程正在休眠或被阻塞......但我在 callgrind 中看不到它。

callgrind 也测量函数时间,或者只是线程活动创建数据的时间。如果不清楚我要问什么......线程确实

2 秒,然后

...将i++是调用图的大约 100% 或大约 66%。

0 投票
1 回答
2544 浏览

c++ - 仪器关闭时调用缓慢

我正在使用 callgrind 来分析一个 linux 多线程应用程序,并且大多数情况下它工作得很好。我从仪器关闭(--instr-atstart=no)开始它,然后一旦设置完成,我用callgrind_control -i on打开它。但是,当我更改某些配置以尝试分析应用程序的不同部分时,它甚至在我打开检测之前就开始运行非常缓慢。基本上,正常操作需要几秒钟的部分代码在 callgrind (仪器关闭)下需要一个多小时。关于为什么会这样以及如何调试/解决缓慢的任何想法?

0 投票
0 回答
176 浏览

kcachegrind - 如何在此 kCacheGrind 输出中找到“缺失”时间?

我正在分析 kCacheGrind(实际上是 WinCacheGrind)来分析 cachegrind 文件,当每个进程的“自我”时间相加时,总时间远不及整个页面的累积时间。更具体地说,整个页面的self时间为6561ms,但{main}内的children累计时间加起来只有96ms。

任何想法如何最好地确定“失踪”时间?

不幸的是,我是新手,所以不能包含图片,但希望我已经提供了足够的开始。如果没有,请告诉我我能提供什么。

谢谢。

编辑:这就是我所看到的http://www.flickr.com/photos/76072991@N02/6832545235/

0 投票
2 回答
21995 浏览

valgrind - 解释 callgrind 数据

我的应用需要一个动态调用图。我用callgrind工具(valgrind套件)运行它并得到callgrind.out.xxxxx文件。现在,我想对这些数据进行图形表示。KCacheGrind对我没有多大帮助,因为它绘制了图形的有限部分(绘制了 ~50 个函数而不是 ~1500 个配置文件,我不知道如何解决这个问题)。如何获得将绘制所有函数的图形图像?

0 投票
1 回答
905 浏览

c++ - 花费的配置文件时间

我正在寻找一些工具来分析时间花在哪里。看过oprofile,但这并没有真正给我我需要的东西。

我正在查看 callgrind,特别是使用 CALLGRIND_START_INSTRUMENTATION 和 CALLGRIND_STOP_INSTRUMENTATION 宏。我不希望该工具像 valgrind 通常那样使应用程序减慢太多。但这并没有真正起作用,因为 Valgrind 似乎将所有内容都序列化到一个线程中。

例如,如果 fn A 调用 fn C 的 fb B,然后返回到 B 和 A,我想知道在哪里花费了多少时间。我有一些正在使用的互斥锁工具,但是一个好的时间工具对于查看时间到底花在哪里非常有用,这样我就可以专注于这些路径。除了自己添加一些东西之外,有什么工具可以用来完成这项任务吗?顺便说一句,它是一个 C++ 应用程序。我不能使用 valgrind,因为它在内核中是单线程的。此外,我的应用程序需要花费大量时间等待,所以普通的 CPU 分析器并没有真正提供太多帮助。