Eclipse CDT Linux下内存分析 实战历险
C++产品开发,上线集成时,都需要内存泄露、覆盖率等检测,这些在Windows下都有很好的工具,如
Visual Studio: 这个内置了很多的工具
Devpartner: VC6时BoundChecker非常棒,Devpartner集成了很多的功能集合 http://www.borland.com/products/devpartner/default.aspx
Insure++: http://www.parasoft.com/jsp/products/insure.jsp?itemId=63
而在Linux环境下,选择少了很多,下面把eclipse中的工具使用说明一下,好费劲。
环境
Ubuntu 10 64位
Eclipse Juno
具体步骤
1、Eclipse CDT【http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplerr】安装好后,linux tools 【http://www.eclipse.org/linuxtools/index.php】 内置集成了很多的工具
不过启动后一用,报错
java.lang.NullPointerException at org.eclipse.linuxtools.internal.valgrind.core.ValgrindCommand.readIntoBuffer(ValgrindCommand.java:82)
google一下,这个问题还出现过,但没有解答,不知道如何解决
2、既然如此,直接使用吧, 进入 http://valgrind.org/ 下载安装
按照docs目录下的文档,测试一个程序后,出现,错误提示
valgrind:
valgrind: On Debian, Ubuntu: libc6-dbg
valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo
http://askubuntu.com/questions/148236/valgrind-does-debug-error 中给出了方法
执行sudo apt-get install libc6-dbg, 提示 E: 无法安装的软件包 错误
咋办,找到如下的快捷解决方法
sudo apt-get update; sudo aptitude install libc6-dbg
ubuntu关于aptitude和apt-get http://blog.csdn.net/yili_xie/article/details/4803314
使用aptitude 解决包冲突的问题,又学了一招
3、使用:以上全部安装好后,终于可以正常使用了
valgrind --leak-check=yes ./aa 检查一个测试程序,终于正常了
此时在进入Eclipse中可以了,具体效果看下图
此时可以直观的看到泄露和提示
另外:Eclipse对于C++还提供了其他的一系列工具,辅助代码的分析等,具体如下:覆盖率等等,这些的使用后续仅需看看
相比Windows下的这些工具,配置和使用起来真是有些麻烦。