标签: callgrind

Valgrind报告了一个段溢出

当用valgrind/callgrind运行我的程序时,我得到以下消息:

==21734== brk segment overflow in thread #1: can't grow to 0x4a39000 (使用不同的地址)

请注意,它之前没有堆栈溢出消息.

我找不到关于此消息的任何文档,我不知道究竟是什么溢出.

任何人都可以帮我弄清问题是什么?这是valgrind或我的程序的问题吗?

c++ valgrind overflow callgrind

45
推荐指数
4
解决办法
2万
查看次数

Windows Callgrind结果浏览器,替代KCacheGrind

是否有任何工具,除了KCacheGrind,能够查看callgrind结果?对于Windows平台最好?

windows profiling valgrind callgrind

30
推荐指数
4
解决办法
3万
查看次数

解释callgrind数据

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

valgrind graphviz callgrind

22
推荐指数
2
解决办法
2万
查看次数

控制台替代kcachegrind?

Kcachegrind摇滚,这是我最喜欢的工具,但是我不时会错过在远程服务器上运行终端(例如使用ssh)的能力.

我知道可以设置VNC或X服务器转发,但是在我需要简单的东西时它非常笨拙.

是否有任何kcachegrind控制台替代(例如基于ncurses)?

linux console callgrind kcachegrind

20
推荐指数
4
解决办法
1万
查看次数

如何使用callgrind只分析一段时间的程序执行?

我想使用valgrind进行一些分析,因为它不需要重新构建程序.(我要配置的程序已经使用"-g"构建)

但是valgrind(callgrind)很慢......所以这就是我要做的事情:

  1. 启动服务器(我想配置该服务器)
  2. 一种附加到该服务器
  3. 在服务器上执行某些操作之前,请先开始收集配置文件数据
  4. 操作完成后,结束收集配置文件数据
  5. 分析分析数据.

我可以在Solaris上使用sun studio来做这种事情.(使用dbx).我只想知道是否可以使用valgrind(callgrind)做同样的事情?

谢谢

profiling valgrind callgrind

20
推荐指数
3
解决办法
1万
查看次数

Callgrind:描述我的代码的特定部分

我试图通过去除我不关心的噪音和计算来描述(使用Callgrind)我的代码的特定部分.这是我想要做的一个例子:

for (int i=0; i<maxSample; ++i) {
    //Prepare data to be processed...
    //Method to be profiled with these data
    //Post operation on the data
}
Run Code Online (Sandbox Code Playgroud)

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

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

for (int i=0; i<maxSample; ++i) {
    //Prepare data to be processed...
    CALLGRIND_START_INSTRUMENTATION;
    //Method to be profiled with these data
    CALLGRIND_STOP_INSTRUMENTATION;
    //Post operation on the data
}
CALLGRIND_DUMP_STATS;
Run Code Online (Sandbox Code Playgroud)

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

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

我也试过了

for (int i=0; i<maxSample; ++i) {
    //Prepare data to be processed...
    CALLGRIND_TOGGLE_COLLECT;
    //Method to be profiled with these data
    CALLGRIND_TOGGLE_COLLECT;
    //Post …
Run Code Online (Sandbox Code Playgroud)

c++ profiling valgrind callgrind

15
推荐指数
2
解决办法
6123
查看次数

有没有工具来检查两个callgrind/valgrind配置文件的区别?

我试图理解程序的性能如何在使用不同选项运行时发生变化 - 我的因子为1.8我想解释一下.我一直在用[valgrind]的callgrind工具进行分析,并使用kcachegrind来显示结果.但我真的很想看看差异.我找到了该cg_diff程序,但它不能与callgrind配置文件一起使用,只能使用cachegrind配置文件,这对我来说太昂贵了. 有没有人知道用于可视化两个配置文件之间差异的工具?

linux profiling valgrind callgrind kcachegrind

14
推荐指数
1
解决办法
1745
查看次数

使用cachegrind和callgrind进行不同的读写计数

我正在使用Cachegrind,Callgrind和Gem5进行一些实验.我注意到一些访问被计为cachegrind的读取,如callgrind的写入以及gem5的读取和写入.

我们来看一个非常简单的例子:

int main() {
    int i, l;

    for (i = 0; i < 1000; i++) {
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        ... (100 times)
     }
 }
Run Code Online (Sandbox Code Playgroud)

我编译:

gcc ex.c --static -o ex

所以基本上,根据asm文件,addl $1, -8(%rbp)执行100,000次.由于它既是读取也是写入,我期待100k读取和100k写入.但是,cachegrind只将它们计为read,而callgrind只计为write.

 % valgrind --tool=cachegrind --I1=512,8,64 --D1=512,8,64
--L2=16384,8,64 ./ex
==15356== Cachegrind, a cache and branch-prediction profiler
==15356== Copyright (C) 2002-2012, and GNU GPL'd, by Nicholas Nethercote et al.
==15356== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info …
Run Code Online (Sandbox Code Playgroud)

c assembly callgrind cachegrind gem5

14
推荐指数
1
解决办法
1155
查看次数

如何解释kcachegrind的结果

谁能告诉我如何对kcachegrind的结果感兴趣.

我有两个版本的代码(v1,v2)都在调试模式下编译.我通过valgrind用选项运行它们:

valgrind --tool=callgrind -v ....

这样生成的输出文件在kcachegrind中打开.现在我已经发现代码的版本v2运行速度比第一版v1更快,因为它意味着.但是我如何从kcachegrind的调用图中获得结果.

在kcachegrind All Callers选项卡中,我有以下列:Incl. , Distance, Called, Caller.

IIUC,Called并且caller在计划中没有被称为"来电者".但我不了解其他人.

另一件事是在选择特定功能然后在"呼叫者"选项卡上显示更多信息.Ir, Ir per call, count, caller 在类型选项卡中:`EventType,Incl.自我,简短,公式.

我在这里没有任何想法.

到目前为止,我读过这些问题:

KCachegrind解释混淆 对分析结果感到困惑

c++ profiling valgrind callgrind kcachegrind

14
推荐指数
1
解决办法
4046
查看次数

如何分析在C/C++应用程序中花在内存访问上的时间?

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

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

通常,剖析器提供函数花费的总时间的估计.是否有可能估算出上述两个组件(Tcomp和Tmem)所花费的时间?

c++ profiling intel-vtune callgrind perf

14
推荐指数
3
解决办法
1237
查看次数