内存泄漏检查-Rational Test Suite-Purify

发表于:2007-4-25 17:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cwj    来源:51testing博客

      大家在测试过程中最头痛的是什么问题,我想大概是服务器运行时不知不觉的服务器就出现异常,通过SystemMonitor发现系统的内存随时间不断的减少,特别在C++的开发下由于没有像Java,C#有比较好的GC,所有的内存都是开发员进行控制,很容易出现内存泄漏的情况,那么如何高效的发现内存问题,成为高级测试人员与开发人员关注的问题。

     
工欲善其事,必先利其器,要快速的在大型的应用中人工的排查内存问题,就有如大海捞针。如何在几百万代码定位问题,人工!显然是不可能的,那必须要借助工具,现在有许多比较好的内存检查工具,比如下面给大家介绍的Purify,PurifyIBM公司出的面象C++VBJava的内存检查工具。

Purify可检查的常见错误类型如下:

1堆阵相关错误。

2堆栈相关错误。

3垃圾内存收集-Java代码中相关的内存管理问题。

4COM相关错误。

5指针错误。

6内存使用错误。

7Windows API相关错误。

8句柄错误。

当然可检查的错误类型还有很多,大家可以参考联机帮助,但我认为常见的错误大多数都发生上面提到的一些错误。

      下面主要给大家以一个例子来说明Purify的使用:

 

1

Purify的使用还是比较简单的,一般只要把程序写成.EXE,然后直接运行就行了,当然如果程序比较大时,则需要重新组织一下,分几个段进行测试,最好的办法就是用CPPUnit来写测试框架,直接调用单个的函数进行测试是最好的,我的例子就是用CPPunit来写的,单独调用相关的测试函数进行测试,由于这里不是介绍CppUint,所以只是给大家提一下,单元测试可以这样写。Purify的启动还是比较简单的,就是运行一个.EXE

      运行完后结果如下图:

 

 

 

2

大家可以看到报以下几个出错,有位未初始化内存,数组越界读写,内存泄露等几个大家比较头痛的问题,以前代码比较多时是无法查到的,现在有了这个工具,就可以很快的查到问题。

      同时Purify不光可以显示出错还可以定位是那段代码出错,当然你要有代码,不过它是把相关的模块全部显示出来,你要从里面找出是由你的代码引起的问题才行,这是一个比较晕的事情,不过多做几次就行,当然如果程序是你写的就更好了,就更容易找到问题,对上面的出现问题的点进行展开,跟据一些使用的经验我一般不会找系统相关的函数,而是先找与自己工程相关的函数,比如下图中的内存演示int CMabString::LeakMemory():

3

就是工程中的代码,一般问题都是由自己的代码引起的,但Purify把所有与此相关的模块都引入,所以你要过滤出什么是真正问题的所在,同时你们还可以看到如果程序有代码的话,Purify可以把代码中的错误都标出,从而减小你再去查找代码的难度,从而快速的定位问题。

当然,Purify还有许多比较好的特性,比如过滤,错误显示设定等等,通过它你可以更快更好的发现问题。

      Purify是一款非常不错的内存检查工作,结合PureCoverage,QuantifyRose Test Suite下的工具,就可以对代码级进行很好的测试,当然如果再结合测试框架,形成自动化测试则能大幅度的节约测试成本,提高工作效率,当然实施单元测试还是要看整个测试团队的能力,不能强推J。如果你要了解其它两个工具,可以看我专栏的其它介绍,谢谢大家。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • ihwks
    2007-4-29 09:22:38

    工具哪里下载啊??老大给个地址啊网上搜索的都没用

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号