valgrind安装及使用
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
valgrind安装及使用
微信公众号:幼儿园的学霸
个人的学习笔记,关于OpenCV,关于机器学习, … 问题或建议,请公众号留言;
目录
valgrind介绍
Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。
Valgrind包括如下一些工具:
- Memcheck。这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。我在项目中目前只用到了该模块,在使用数组或者OpenCV的Mat时,可以利用该工具查看内存使用是否出现问题。
- Callgrind。它主要用来检查程序中函数调用过程中出现的问题。
- Cachegrind。它主要用来检查程序中缓存使用出现的问题。
- Helgrind。它主要用来检查多线程程序中出现的竞争问题。
- Massif。它主要用来检查程序中堆栈使用中出现的问题。
- Extension。可以利用core提供的功能,自己编写特定的内存调试工具。
valgrind安装
1.valgrind下载:
http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2
2.valgrind安装:
tar -jxvf valgrind-3.12.0.tar.bz2
cd valgrind-3.12.0
./configure
make
sudo make install
3.查看valgrind是否安装成功:
valgrind --help
#运行上面命令查看相关帮助
4.使用valgrind内存泄露检测工具:
首先进入程序所在目录,此处我的程序是LaneDetectionDemo,执行下面命令
valgrind --tool=memcheck --leak-check=full ./LaneDetectionDemo
其中,采用valgrind内存泄露检测运行程序时,程序执行速度将会非常慢。
为了使valgrind发现的错误更精确,如能够定位到源代码行,建议在编译时加上-g参数,编译优化选项请选择O0,虽然这会降低程序的执行效率。
5.如果安装有CLion软件,CLion带有valgrind调试模式。如图1所示,安装有valgrind时,图中圈出的部分将为绿色可点击调试,查看是否有内存泄漏等问题产生。
图1 CLion和valgrind
valgrind运行界面分析
如图1所示为valgrind的一个调试界面,图片来源于网络。
图2 valgrind 内存泄漏检测界面
- 左边显示类似行号的数字(32372)表示的是 Process ID。
- 最上面的红色方框表示的是 valgrind 的版本信息。
- 中间的红色方框表示 valgrind 通过运行被测试程序,发现的内存问题。通过阅读这些信息,可以发现:
- 这是一个对内存的非法写操作,非法写操作的内存是4 bytes。
- 发生错误时的函数堆栈,以及具体的源代码行号。
- 非法写操作的具体地址空间。
- 最下面的红色方框是对发现的内存问题和内存泄露问题的总结。内存泄露的大小(40 bytes)也能够被检测出来。
图注:幼儿园的学霸
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献6条内容
所有评论(0)