RationalPurify使用教程精讲

上传人:新** 文档编号:591854560 上传时间:2024-09-18 格式:PPT 页数:44 大小:2.53MB
返回 下载 相关 举报
RationalPurify使用教程精讲_第1页
第1页 / 共44页
RationalPurify使用教程精讲_第2页
第2页 / 共44页
RationalPurify使用教程精讲_第3页
第3页 / 共44页
RationalPurify使用教程精讲_第4页
第4页 / 共44页
RationalPurify使用教程精讲_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《RationalPurify使用教程精讲》由会员分享,可在线阅读,更多相关《RationalPurify使用教程精讲(44页珍藏版)》请在金锄头文库上搜索。

1、使用Rational Purify 目录nPurify概述概述 nPurify具体功能描述 nPurify使用举例nPurify主要参数设置 Purify概述 n程序代码中,与内存有关的问题可以分成两大类:内存访问错误和内存使用错误。内存访问错误包括读内存错误和写内存错误。读内存错误可能让程序模块返回意想不到的结果,从而导致后续的程序模块运行异常。 内存使用错误主要是指程序模块申请的内存没有正确释放,系统可用内存逐渐减少,使程序运行逐渐减慢,直至停止。 Purify概述(续)nPurify使用具有专利的OCI(Object Code Insertion,目标代码插入)技术,在被测试的目标程序中

2、插入一些函数,这些函数主要是内存检测的语句。这些语句放置在程序代码中所有内存操作之前,一旦在程序运行时发现内存问题,它们就会报告问题信息。nPurify主要检测以下类型的内存错误:数组内存是否越界读/写、是否使用了未初始化的内存、是否对已释放的内存进行读/写、是否对空指针进行读/写、内存泄漏等。nRational Purify能自动找出错误的准确来源和位置,如果有源代码,可以从Purify中启动相应的编辑器,快速修复错误。nRational Purify可以从功能、可靠性和性能等多个方面反映应用程序的质量。 Purify的特色 n提供了一套内存使用状况分析工具,自动找出Visual C/C+和

3、Java 代码中与内存有关的错误 nPurify 的WinCheck 功能会检查应用程序每次COM 方法和Windows API的调用,包括GDI 句柄检查和Windows资源泄漏及错误指针的检查nRational Purify不但能检查可访问源代码的内存错误,还能检查程序库中无权访问的源代码错误。 n使用Purify的PowerCheck功能可以定制错误检查规则,可以按模块调整所需的检查级别。 nRational Purify与Microsoft Visual Studio 集成,程序员在开发工具中就可以获得Purify的自动调试以及源代码编辑功能。 目录nPurify概述 nPurify具

4、体功能描述具体功能描述 nPurify使用举例nPurify主要参数设置 可检查的错误类型n堆阵相关错误如未初始化内存的读取和复制错误,以及数组越界读写错误)n堆栈相关错误如未初始化内存的读取和复制错误,以及堆栈越界读写错误)n垃圾内存收集Java 代码中相关的内存管理问题nCOM 相关错误如COM API/接口调用失败可检查的错误类型(续)n指针错误如无效指针和空指针的读写错误n内存使用错误如释放内存的读写错误、内存泄漏和释放内存匹配错误nWindows API 相关错误如Windows API 函数参数错误和返回值错误n句柄错误如泄漏和句柄使用错误可检测的错误代码nActiveX(OLE/

5、OCX)控件nCOM 对象nODBC 构件nJava 构件、applet、类文件、JAR 文件可检测的错误代码(续)nVisual C/C+源代码nVisual Basic 应用程序内嵌的Visual C/C+构件n第三方和系统DLLn支持com调用的应用程序中的所有Visual C/C+构件测试信息说明n信息色彩,Purify对源程序中有内存问题的代码使用不同的颜色标识。红色:内存块没有被分配和初始化蓝色:内存块已经被分配并且已初始化黄色:内存块已经被分配但是没有初始化测试信息说明(续)名称缩写注:下面是可引起内存不可读或不可写的名称缩写:Array Bounds Read (ABR):数组

6、越界读Beyond Stack Read (BSR):堆栈越界读Free Memory Read (FMR):空闲内存读Invalid Pointer Read (IPR):非法指针读Null Pointer Read (NPR):空指针读Uninitialized Memory Read (UMR):未初始化内存读目录nPurify概述 nPurify具体功能描述 nPurify使用举例使用举例nPurify主要参数设置 程序 #include using namespace std; int main() char* str1=four; char* str2=new char4; /没考

7、虑字符串终止符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 /Memory Read、Free

8、 Memory Write) delete str3; /FFM,再次释放已经被释放的空间 (Free Freed Memory) return 0; 第一步:启动Purify 第二步:在Purify中运行被测程序n选择File菜单中的Run命令后,出现如图3-2所示的Run Program对话框 第三步n在Program name中选择被测对象exp11.exe后,点击“Run”,运行程序。运行前选择工作目录,工作目录默认为被测程序所在的目录;如果被测程序有命令行参数,在Command-line arguments项中输入;在Collect项中选择要收集的信息类别;选择是否在调试器下运行n程

9、序运行结束,出现Purify检测结果如下 测试结果结果说明n通过此窗口,可以看到在程序运行期间检测到的与内存有关的错误:n第3、4、5行,黄色标注读未初始化内存(UMR)n第6、8行,红色标注数组越界导致内存不可读(ABR)n第7行,红色标注数组越界导致内存不可写(ABW)n第9行,红色标注对已经释放的内存读(FMR)n第10行,红色标注对已经释放的内存写(FMW)n第11行,红色标注再次释放已经释放的内存(FFM)n其他行,蓝色标注运行过程信息和测试摘要信息。结果说明(续)双击Data Browser窗口中的错误或提示前面的“”号,可以看到该错误的详细信息。如果被测程序包含源代码,则在该错误

10、的详细信息中列出错误的代码行并解释造成错误的原因。例如,点击第7行前面的“+”号,会展开如图3-4所示的错误说明。其中,ABW指明了错误类型,Error location 指出错误在源代码中的位置,Allocation location指出错误的内存分配位置 结果说明(续)结果说明(续)继续点击Error location前面“+”号后,再点击main前面的“+”号,出现下如图所示的错误位置提示。结果说明(续)n保存测试信息。在工作目录中生成一个.pfy 文件,其中保存了DataBrowser 窗口中的数据,以便进行数据共享。n无论是否保存测试信息,都将在工作目录中生成一个文本文件,形成测试日

11、志。目录nPurify概述 nPurify具体功能描述 nPurify使用举例nPurify主要参数设置主要参数设置 Settings项中的default setting nError and Leaks标签 ,用于设置内存错误和泄漏参数。 nShow first message only:仅在相同的错误第一次出现时显示相关信息。 nShow UMC message:显示UMC(Uninitialized Memory Copy)信息,默认情况下,Purify不显示UMC信息。nMemory leaks:程序退出时报告内存泄漏信息。nMemory in use:程序退出时报告内存使用情况信息。

12、nHandles in use:程序退出时报告句柄使用情况信息。nShow maximum call stack detail:显示最大调用堆栈信息。 nLength for error:设置错误堆栈长度。 nLength for allocation:通过设置Purify最大调用堆栈层数,确定与程序中发现的错误一致的内存分配位置。nDeferred free queue:延迟自由队列。 nLength:延迟自由队列长度。 nThreshold:保留在延迟自由队列中内存块大小设置,超过该尺寸的内存块被立即释放,而不会保留在延迟自由队列中。nRed zone length:设置亏损区长度。 Po

13、werCheck标签,定制错误检查规则nThe module doesnt contain debugging info:检查不包含调试信息的模块nThe module is largerKB:只检查大于K字节的模块nDefault coverage level:对于同时进行的代码覆盖分析,此处设置覆盖级别,如“代码行”或“函数”,以便更好地控制错误检查和数据覆盖。nLine:覆盖级别为代码行。nFunction:覆盖级别为函数。nExclude all modules in Windows directory:排除所有Windows目录下的模块。Files标签 n设置相关文件的路径及填写附加

14、信息 Advanced标签 Leak scan interval:被测程序发生内存泄漏后, 设置Purify报告内存泄漏信息等待的时间。如果设置为0,Purify仅在被测程序退出时一次性报告所有内存泄漏信息 Settings项中的Preferences nRuns标签 nWorkspace标签 nJVM标签 nSource Code标签 Runs标签nShow instrumention progress:对本地非托管代码测试时,是否显示检测对话框。nShow instrumention warnings:对本地非托管代码测试时,在不同的程序文件中多次检测到相同的警告信息,是否每次都显示警告信

15、息对话框。如果希望Purify在发现警告信息后能够持续检测,不选择此项,可以随后在属性窗口的日志标签中查看此类警告信息。nShow LoadLibrary instrumention progress:对VC+、VB等本地代码进行测试,当工具文件需要调用工具列表时,是否显示工具对话框。nConfirm run concellation:点击File菜单下Cancel Run命令或者点击按钮中途取消运行时,是否每次都显示确认消息。Runs标签(续)nCreate automatic merge:创建自动合并。nUse defaule filter set:下次运行本地非托管代码,是否使用当前的过

16、滤器设置。nUse case sensitive path name:设置Purify对路径名是否区分大小写。nBreak on warnings in addition to error:测试本地非托管代码时,选择此项,无论错误还是警告出现,Purify都会中断并启动查错工具;不选择此项,仅仅错误出现时Purify才会中断并启动查错工具,同时,启动“Use the following debugger”中用户指定的调试器调试错误代码,如果没有指定调试器,则使用系统中注册的调试器。n注意:Purify不支持Visual Studio.NET作为本地非托管代码的调试器。nUse the foll

17、owing debugger:设置用户指定的调试器。Workspace标签Workspace标签(续)nShow Welcome Screen at startup:独立启动Purify软件时,每次显示欢迎窗口。Purify与Visual Studio集成使用时,不管此处如何设置,都不显示欢迎窗口。nShow directories in file names:在输出窗口显示文件名时,是否同时显示该文件的路径。nUsesounds:出现下列事件时,是否播放提示音:错误、警告、欢迎屏幕、检测开始、检测结束、程序开始、程序结束。nWarn on unsaved data:关闭或退出一个没有保存测试

18、数据的程序时,是否显示警告消息对话框。nExpand call stacks:选择此项后,用户点击错误窗口中的“+”图标查看错误时,Purify自动扩展其中的每个函数调用分支,其中不包含源代码。Workspace标签(续)nCreate data browsers hidden:选择此项,Purify创建数据浏览窗口时,并不显示该浏览窗口。nShow commas in numbers:在数字显示中是否使用逗号作为分隔符。nShow Guide to Using Memory Profiling:运行Purify的内存概要分析程序时,显示“Guide to Using Memory Profi

19、ling in Purify”向导,该向导包含了一些简单指令和相关信息,以协助用户更好更快地启动该功能。nDiscard excess memory profiling:Purify自动丢弃在浏览窗口中显示的集成运行数据,程序运行结束后,仅显示快照和差异比较条目。nSync Call Graph from Rrference:函数调用曲线图中选择的方法与对象参考曲线图中选择的对象是否自动同步。Workspace标签(续)nShow Object List View:显示数据浏览器窗口中的对象列表视图。对象列表视图显示了内存概要分析程序运行期间分配的方法对象的详细信息。nShow in Navi

20、gator:选择程序运行期间在Navigator窗口中要显示的信息,如日期、时间、错误数量、检测到的警告信息、内存泄漏的字节数、用户指定的命令行参数等。nSort Memory Items in Error View:选择Purify消息在错误视图中的排列次序。消息可以按照泄漏的字节数排列(降序),也可以按照模块名称排列(升序),如果两者都选择,先按照模块名排序,相同的模块名按泄漏的字节数排序。JVM标签 n测试Java程序时,用户在该标签中选择Java虚拟机,个性化Java虚拟机。 Source Code标签 nShow C+ class names:错误视图中显示的C+函数名同时包含类名。

21、nShow C+ argument lists:错误视图中显示的C+函数名包含参数列表。nConfirm recently changed source:Purify在检测到源文件改变后,是否显示消息。nShow instruction pointers:在错误视图中是否显示调用堆栈条目的指令地址。例如:如果显示指令地址,会有类似下列的输出:CStockApp:CStockApp(void)Stock.cpp:155 ip=0x0040dd11;如果不显示指令地址,则会显示如下:CStockApp:CStockApp(void)Stock.cpp:155nShow instruction po

22、inters offset:在错误视图中是否显示函数指令地址的相对偏移量。 Source Code标签 (续)nSpaces per:显示源代码时,Purify使用几个空格表示tab字符。nLines of source:在含有错误的代码行之前以及之后,突出几行用以显示源代码(包括空白行)。nUse Microsoft Visual Studio editor:使用微软的 Visual Studio 编辑器查看源代码。nUse Purify source viewer:使用Purify的查看器查看源代码。nUse the following editor:用户自己设置一个查看源代码的编辑器。Source Code标签 (续)View当中的Create Filtern略

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号