用Rational Purify调试程序内存

用Rational Purify调试程序内存

ID:38499384

大小:237.00 KB

页数:6页

时间:2019-06-13

用Rational Purify调试程序内存_第1页
用Rational Purify调试程序内存_第2页
用Rational Purify调试程序内存_第3页
用Rational Purify调试程序内存_第4页
用Rational Purify调试程序内存_第5页
资源描述:

《用Rational Purify调试程序内存》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用RationalPurify调试程序内存--2013年1月11日19:05:45内存问题很多,而内存泄漏(MemoryLeak)并不像“野指针”和“数组越界”那么容易暴露出来。在一直开机的情况下,内存泄漏会导致可用内存逐渐减少,以致程序无法运行。特别是对于服务器来说,内存泄漏更可怕。本文主要包括:1、Purify简介;2、Purify检测的代码错误类型;3、在windows中使用Purify;4、Purify使用注意事项。【Purify简介】Purify利用目标代码插入技术(OCI,ObjectCodeInsertion),在你的目标程序中插入一些它自己的函数,这些函数主要都是内

2、存检测的语句,这些语句将会放置在程序中所有内存操作之前,一旦在程序运行时发现内存问题,Purify所插入的这些语句就会向你报告。一般来说,所有的内存检测工具都是这样工作的。Purify对程序中的每一个内存操作都进行检测,并对精确报告内存出现错误的变量和语句,以提供出现错误原因的分析。Purify主要检测的是下面这些内存错误:◆数组内存是否越界读/写。◆是否使用了未初始化的内存。◆是否对已释放的内存进行读/写。◆是否对空指针进行读/写。◆内存漏洞(内存泄漏)。【Purify检测的代码错误类型】一、红色叹号提示1、  ABR:ArrayBoundsRead 数组越界读(只检测动态内存分

3、配的数组,对Global、Local、Static的数组无法检测)。2、  ABW:ArrayBoundsWrite 数组越界写(只检测动态内存分配的数组,对Global、Local、Static的数组无法检3、  ABWL:LateDetectArrayBoundsWrite(AnABWLmessageindicatesthattheprogramwroteavaluebeforethebeginningoraftertheendofanallocatedblockofmemory)4、  BSR:BeyondStackRead函数可能读了一个当前堆栈之外的指针。例如在写变量值的

4、时候程序出现了异常,那么读此变量时,就会发生BSR错误。(不适用于堆栈内的本地数组)5、  BSW:BeyondStackWrite函数可能写了一个当前堆栈之外的指针。(不适用于堆栈内的本地数组)6、  EXU:UnhandledException未经处理的异常7、  FFM:FreeingFreedMemory正在释放已经释放过的内存。8、  FIM:FreeingInvalidMemory试图释放未分配的、无效的内存。9、  FMM:FreeingMismatchedMemory释放不匹配的内存,用不正确的API函数释放某类内存。10、FMR:FreeMemoryRead读取已

5、经释放或者未经分配的内存内容。11、FMW:FreeMemoryWrite对已经释放或者未经分配的内存做写入操作。12、FMWL:LateDetectFreeMemoryWrite13、IPR:InvalidPointerRead程序正在读取一个无效的,不可以设定地址的内存区域。14、IPW:InvalidPointerWrite程序正在对一个无效的,不可以设定地址的内存区域进行写操作。redzoneForerrordetectionruns,thebytesthatareplacedatthebeginningandendofeachallocatedblockofmemoryi

6、naprogramatruntime.TheredzoneisusedtodetectArrayBoundsRead(ABR),ArrayBoundsWrite(ABW),andLateDetectArrayBoundsWrite(ABWL)errors.15、NPR:NullPointerRead空指针读。16、NPW:NullPointerWrite空指针写。17、COR:CoreDumpImminent非法操作18、FNH:FreeingNonHeapMemory释放非堆内存19、FUM:FreeingUnallocatedMemory释放了没有分配的内存20、MRE:Mal

7、locReentrancyErrorremalloc错21、SBR:StackArrayBoundsRead栈数组越界读22、SBW:StackArrayBoundsWrite栈数级越界23、ZPR:ZeroPageRead零页面读24、ZPW:ZeroPageWrite零页面写二、黄色警告信息1、COM:COMAPI/InterfaceFailureCOM操作失败。在每一个COMAPI或COM接口调用后,Purify都会检查HRESULT,如果它的值不是标明操作成功

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。