• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

C/C++内存问题检查利器—Purify 设置WatchPoint

发布: 2009-4-20 17:33 | 作者: 陈皓 | 来源: 测试时代采编 | 查看: 552次 | 进入软件测试论坛讨论

领测软件测试网

MILY: 宋体">设置WatchPoint

你可以在你的程序中,对你所想监控的程序设置一些WatchPoint,以方便于你对程序进行调试,或更容易找出问题的原因。就像我前面说,Purify可以找到你的内存泄露,但其不能找到内存泄露的原因,你可以通过设置WatchPoint来跟踪一块内存,以找到在程序执行过程中该内存的访问情况。

 

PurifyWatchPoint可以产生下例消息:

 

l         WPR(被WatchPoint的内存读)

l         WPW(被WatchPoint的内存写)

l         WPM(被WatchPoint的内存分配)

l         WPF(被WatchPoint的内存释放)

l         WPN(来到被WatchPoint的内存的Scope

l         WPX(离开被WatchPoint的内存的Scope

 

一旦你设置好了一个WatchPointPurify会自动报告上述这些信息,以告诉你内存的存取情况。很方便你调试程序。

 

WatchPoint一般是在调试程序时跟踪一块内存时候使用的,你也可以用其跟踪一些系统级的全局变量,如:errno。一旦errno被写了,马上会报告一个WPW消息,展开后,你能看到函数的堆栈情况,以及是在哪个系统调用后出现了错误。这个使用很方便我们找到一些非内存方面的问题。

 

大家可能会有一种感觉,那就是在一般的调试器中,如GDB中也有WatchPoint的设置(对GDB的使用请参考我的文章《GDB调试程序》),那么,在调试器中的WatchPointPurify的有什么不同?下面是一些GDB中的WatchPoint不足的地方:

 

1)  GDB中的WatchPoint用于单步跟踪中。

2)  GDB中的WatchPoint只能在其内存的Scope中,离开了ScopeWatchPoint会被删除。

3)  GDB中设置一个4字节的内存WatchPoint,会让程序的运行效率下降1000个数量级。

 

Purify中的WatchPoint有效地克服了这些问题,它在全局范围内监控所有内存的使用,并且,其速度上大大地快于GDB等一系列的调试器。

 

有两种方式可以让我们设置PurifyWatchPoint,一种是在程序中使用WatchPointAPI函数,一种是直接在调试器中使用(如:GDB),下面我介绍一下这两种用法:

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: purify Purify 检查 利器 内存 WatchPoint

51/512345>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网