RationalPurify使用教程.ppt.ppt
《RationalPurify使用教程.ppt.ppt》由会员分享,可在线阅读,更多相关《RationalPurify使用教程.ppt.ppt(44页珍藏版)》请在三一文库上搜索。
1、使用Rational Purify,清华大学出版社,目录,Purify概述 Purify具体功能描述 Purify使用举例 Purify主要参数设置,Purify概述,程序代码中,与内存有关的问题可以分成两大类:内存访问错误和内存使用错误。 内存访问错误包括读内存错误和写内存错误。读内存错误可能让程序模块返回意想不到的结果,从而导致后续的程序模块运行异常。 内存使用错误主要是指程序模块申请的内存没有正确释放,系统可用内存逐渐减少,使程序运行逐渐减慢,直至停止。,Purify概述(续),Purify使用具有专利的OCI(Object Code Insertion,目标代码插入)技术,在被测试的目
2、标程序中插入一些函数,这些函数主要是内存检测的语句。这些语句放置在程序代码中所有内存操作之前,一旦在程序运行时发现内存问题,它们就会报告问题信息。 Purify主要检测以下类型的内存错误:数组内存是否越界读/写、是否使用了未初始化的内存、是否对已释放的内存进行读/写、是否对空指针进行读/写、内存泄漏等。 Rational Purify能自动找出错误的准确来源和位置,如果有源代码,可以从Purify中启动相应的编辑器,快速修复错误。 Rational Purify可以从功能、可靠性和性能等多个方面反映应用程序的质量。,Purify的特色,提供了一套内存使用状况分析工具,自动找出Visual C/
3、C+和Java 代码中与内存有关的错误 Purify 的WinCheck 功能会检查应用程序每次COM 方法和Windows API的调用,包括GDI 句柄检查和Windows资源泄漏及错误指针的检查 Rational Purify不但能检查可访问源代码的内存错误,还能检查程序库中无权访问的源代码错误。 使用Purify的PowerCheck功能可以定制错误检查规则,可以按模块调整所需的检查级别。 Rational Purify与Microsoft Visual Studio 集成,程序员在开发工具中就可以获得Purify的自动调试以及源代码编辑功能。,目录,Purify概述 Purify具体
4、功能描述 Purify使用举例 Purify主要参数设置,可检查的错误类型,堆阵相关错误 如未初始化内存的读取和复制错误,以及数组越界读写错误) 堆栈相关错误 如未初始化内存的读取和复制错误,以及堆栈越界读写错误) 垃圾内存收集 Java 代码中相关的内存管理问题 COM 相关错误 如COM API/接口调用失败,可检查的错误类型(续),指针错误 如无效指针和空指针的读写错误 内存使用错误 如释放内存的读写错误、内存泄漏和释放内存匹配错误 Windows API 相关错误 如Windows API 函数参数错误和返回值错误 句柄错误 如泄漏和句柄使用错误,可检测的错误代码,ActiveX(OL
5、E/OCX)控件 COM 对象 ODBC 构件 Java 构件、applet、类文件、JAR 文件,可检测的错误代码(续),Visual C/C+源代码 Visual Basic 应用程序内嵌的Visual C/C+构件 第三方和系统DLL 支持com调用的应用程序中的所有Visual C/C+构件,测试信息说明,信息色彩,Purify对源程序中有内存问题的代码使用不同的颜色标识。 红色:内存块没有被分配和初始化 蓝色:内存块已经被分配并且已初始化 黄色:内存块已经被分配但是没有初始化,测试信息说明(续),名称缩写 注:下面是可引起内存不可读或不可写的名称缩写: Array Bounds Re
6、ad (ABR):数组越界读 Beyond Stack Read (BSR):堆栈越界读 Free Memory Read (FMR):空闲内存读 Invalid Pointer Read (IPR):非法指针读 Null Pointer Read (NPR):空指针读 Uninitialized Memory Read (UMR):未初始化内存读,目录,Purify概述 Purify具体功能描述 Purify使用举例 Purify主要参数设置,程序,#include using namespace std; int main() char* str1=“four“; char* str2=n
7、ew char4; /没考虑字符串终止符“0“也要占内存空间,导致后面数 /组越界错误 char* str3=str2; coutstr2endl; /UMR,str2没有赋值,对未初始化的内存读(Uninitialized /Memory Read) strcpy(str2,str1); /ABW,str2空间不足,数组越界写(Array Bounds Write) coutstr2endl; /ABR,str2空间不足,数组越界读(Array Bounds Read) delete str2; str20+=2; /FMR and FMW,对已经释放内存读以及对已经释放内存写(Free /
8、Memory Read、Free Memory Write) delete str3; /FFM,再次释放已经被释放的空间 (Free Freed Memory) return 0; ,第一步:启动Purify,第二步:在Purify中运行被测程序,选择File菜单中的Run命令后,出现如图3-2所示的Run Program对话框,第三步,在Program name中选择被测对象exp11.exe后,点击“Run”,运行程序。运行前选择工作目录,工作目录默认为被测程序所在的目录;如果被测程序有命令行参数,在Command-line arguments项中输入;在Collect项中选择要收集的信
9、息类别;选择是否在调试器下运行 程序运行结束,出现Purify检测结果如下,测试结果,结果说明,通过此窗口,可以看到在程序运行期间检测到的与内存有关的错误: 第3、4、5行,黄色标注读未初始化内存(UMR) 第6、8行,红色标注数组越界导致内存不可读(ABR) 第7行,红色标注数组越界导致内存不可写(ABW) 第9行,红色标注对已经释放的内存读(FMR) 第10行,红色标注对已经释放的内存写(FMW) 第11行,红色标注再次释放已经释放的内存(FFM) 其他行,蓝色标注运行过程信息和测试摘要信息。,结果说明(续),双击Data Browser窗口中的错误或提示前面的“”号,可以看到该错误的详细
10、信息。如果被测程序包含源代码,则在该错误的详细信息中列出错误的代码行并解释造成错误的原因。例如,点击第7行前面的“+”号,会展开如图3-4所示的错误说明。其中,ABW指明了错误类型,Error location 指出错误在源代码中的位置,Allocation location指出错误的内存分配位置,结果说明(续),结果说明(续),继续点击Error location前面“+”号后,再点击main前面的“+”号,出现下如图所示的错误位置提示。,结果说明(续),保存测试信息。在工作目录中生成一个.pfy 文件,其中保存了DataBrowser 窗口中的数据,以便进行数据共享。 无论是否保存测试信息
11、,都将在工作目录中生成一个文本文件,形成测试日志。,目录,Purify概述 Purify具体功能描述 Purify使用举例 Purify主要参数设置,Settings项中的default setting,Error and Leaks标签 ,用于设置内存错误和泄漏参数。,Show first message only:仅在相同的错误第一次出现时显示相关信息。 Show UMC message:显示UMC(Uninitialized Memory Copy)信息,默认情况下,Purify不显示UMC信息。 Memory leaks:程序退出时报告内存泄漏信息。 Memory in use:程序退
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RationalPurify 使用 教程 ppt
链接地址:https://www.31doc.com/p-3483697.html