首页 > Callgrind--函数调用分析工具以及可视化方法

Callgrind--函数调用分析工具以及可视化方法

生成分析文件

命令行运行:

valgrind --tool=callgrind ./palmGateMachine

检测完毕之后会生成一个文件callgrind.out.26805, 后面的数字其实是这个待测进程的pid

可视化方法

可视化方法

可视化工具

kcachegrind

1、下载地址:

https://launchpad.net/ubuntu/trusty/+search?text=kcachegrind

百度云盘链接:https://pan.baidu.com/s/1rPRWMHi5WWnv2MRKbiHIVg

提取码:k4dd

我下载的这个,

在这里插入图片描述

直接双击安装

2、安装之后命令行 kcachegrind打开

open 选项选择callgrind.out.26805 文件 就可以了

3、如图

在这里插入图片描述

参数解释:

incl – 包含的运行时间

self --自我调用(根据stackOverflow上的解释,这两个区别是一个是全部的耗费时间或时间比, self是自我调用或类似于递归这种的,不明确)

called --调用次数

右边的图解释:

调用时间分布,如图,main函数里面有两个耗费时间的函数分别是

palmGateMachine::init 和QguiApplication::exec, 一个是主程序的初始化, 一个是主程序的事件循环, 这两个运行时间加起来,等于main函数的运行时间,

后续的也是依此类推

这里有一个简单的文档:

vi-hps-tw09-Kcachegrind-guide.pdf

链接:https://pan.baidu.com/s/1SxUQ2jlXz4snnHLodnoAfg

提取码:mc8a

更多相关:

  • MQTT 心跳和keepalive配置 内容: 正常MQTT 服务器端会配置一个超时时间,一般为60s, 在这个时间段内一个连接如果没有数据传输的话,服务端会主动断开连接以释放资源, 有两种方式可以规避这个问题: 方式1: 最为简单, 将keepalive的时间设置小于 服务端的超时时间,则客户端每隔 keepalive的时间就...

  • 概述 我们用jmeter做性能测试,必然需要学会分析测试报告。但是初学者常常因为对概念的不清晰,最后被测试报告带到沟里去。   常见的误区 分析响应时间全用平均值响应时间不和吞吐量挂钩响应时间和吞吐量不和成功率挂钩。。。。。   平均值特别不靠谱 平均值为什么不靠谱?相信大家读新闻的时候经常可以看到,平均工资,平均房价,平均支出,等等...

  • 原文: https://mp.weixin.qq.com/s/Dns-ucDwuDeR7lNSlibyAA 放假通知   今年7月1日放暑假 9月2日开学   今天,省教育厅发布通知,2019年全省中小学幼儿园暑期放假时间统一为7月1日,秋季开学时间9月2日。2020年寒假放假时间为1月18日,春季开学时间为2月10日。 刚刚...

  • 1. P117页,练习15:最高响应比 HRRF: 作业 提交时刻 运行时刻 开始时刻 完成时刻 周转时间/min 带权周转时间/min 1 10:00 2:00 10:00 12:00 120 120/120 2 10:10 1:00 12:25 13:25 195 195/60 3 1...

  • 首次运行Alt+R    然后继续Enter直到运行npm start为止...

  • 运行命令control打开控制面板 运行telnet命令就可以了...

  •     cnpm install -g create-react-app 找一个创建项目的目录,用cmd打开资源管理器对应目录运行 create-react-app demo 注意:安装过程中最好焦点不要移出cmd窗口,有时候会莫名其妙的中断安装 最后运行即可 cd democnpm start 运行成功后...

  •   win+R 运行sysdm.cpl 运行cmd mvn -v 如果不是这样就运行path 看下安装路径是否正确重新配置sysdm.cpl...

  • canrun 测试运行HTML 测试博客园HTML源码运行程序

  • initializeGL函数由于是初始化,所以只调用一次 而resizeGL和paintGL会多次调用 resizeGL在正常的情况下,触发的条件是,窗口大小发生变化时,resizeGL被调用,之后会触发paint事件,从而调用paintGL()事件处理器。 paintGL在正常的情况下,只要你移动窗口的位置,就会马上触发pain...

  • 思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include   using namespace std;    class A{  public:  A(){  cout<<"A()"<

  • (1)如果用定时器的话,初始的时候注册一个定时器的回调函数,原型是 glutTimerFunc(unsigned int millis, void (*func)(int value), int value);         参数对应关系为:glutTimerFunc(毫秒数, 回调函数指针, 区别值); (2)写自己的回调函数 v...

  • 0x00 前置信息 VLC是一个非常庞大的工程,我从它的架构及流程入手进行分析,涉及到一些很细的概念先搁置一边,日后详细分析。 0x01 源码结构(Android Java相关的暂未分析) # build-android-arm-linux-androideabi/:第三方库。 # modules/:模块代码。 # modules/...