Valgrind内存检测工具在Eclipse中的使用

Linux C/C++开发最令人头疼的一件事情莫过于内存泄漏的检查,内存泄漏会导致软件在运行一段时间后莫名其妙的崩溃,对于需要长时间运行的程序危害极大;而对于使用时间较短的软件,软件运行期间会慢慢消耗内存,虽然不一定导致崩溃,但是由于其不断地吞噬系统资源,也是非常糟糕的。


Linux平台下,有一个工具叫Valgrind,可用于内存调试、内存泄漏检测以及性能分析。今天就来看看如何配置并使用它进行内存泄漏问题的查找。


首先到Valgrind的官网下载源码,解压后,命令行进入到源码目录,分别执行命令:

./configure

make

make install


这样就完成了Valgrind的编译和安装,可以输入命令:

valgrind --version


如果显示出Valgrind的版本号,就说明安装成功了。接下来配置Eclipse,使其可以使用Valgrind,如果之前安装的Eclipse没有安装CDT,那么,在使用Eclipse进行C/C++开发前,应该先安装CDT。网上有很多教材,可以看看如何在Eclipse下进行Linux C/C++开发。


现在回到主题,Eclipse使用Valgrind需要安装Valgrind插件,该插件属于Linux Tools Project,我们打开Eclipse,然后点击菜单的Help->Install New Software...->Add,在弹出的对话框中分别输入:

Name:Linux Tools

Location:http://download.eclipse.org/linuxtools/update


点击OK,如下图所示:



这时候,不需要Select All,而是在type filter text编辑栏中输入Valgrind,选择下图中的两项,然后一路Next下去,等待安装完成,重启Eclipse即可。



下面我们写一小段代码,来看看Valgrind的作用,main.c代码如下:

#include <stdlib.h>

int main(void) {
	char *mem = (char *) malloc(1);
	free(mem);

	return 0;
}

真的是很小的一段代码,mem指针是我们专门制造的内存泄漏,malloc之后,我们没有回收内存。虽然进程结束,内存会立刻回收,但是这是一段不严谨的代码。编译后,在Eclipse左边项目浏览器中在编译生成的二进制文件上右键->Profiling Tools->Profile Memory,Eclipse界面会显示



告诉我们代码main.cpp的第四行存在内存没有被回收,打开源码文件,如下图所示:



这里有一行报错,可以看到,错误会被定位到我们从堆上开辟内存空间的语句,也就是说,这里开辟的这块内存空间没有被释放。我们在return前加上释放的语句,再次编译,使用Valgrind检查,这次,就没有问题了。


可以看到,使用Valgrind可以方便我们对代码中的内存问题进行检查,方便我们定位问题,降低了内存泄漏问题的查找难度。


工欲善其事,必先利其器。做软件开发也一样,我们可以尝试寻找一些方便我们查找和解决问题的工具,这些工具会使得我们的开发更加轻松,解决问题也更加迅速。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值