Rational Purify简单介绍

来源:互联网 发布:adobe audition mac 编辑:程序博客网 时间:2024/05/20 17:27

Rational Purify

       先补充一点内存泄漏的错误认识,认为泄漏的内存在程序退出后操作系统不能回收的认识是错误的,只要程序退出操作系统会回收一切它给程序分配的资源,一般操作系统都是用伙伴系统管理内存分配,每块分配出去的内存都是拥有操作系统的标记的,只要使用该块内存的程序退出,就能回收分配给程序的内存。内存泄漏最大的问题就是不断吞噬操作系统内存,如果程序一直运行最后可能导致操作系统再无内存可分配。

Rational Purify for Windows 能自动找出Visual C/C++Java 代码中与内存有关如内存错误、内存泄漏等)的错误,确保整个应用程序的质量和可靠性。在查找典型的Visual C/C++程序中的传统内存访问错误,以及Java 代码中与垃圾内存收集相关的错误方面。

 

1.       调试流程自动化,只需花费少量时间进行调试。Purify 还可以帮助及早找出致命或破坏性的内存访问错误,并能减少许多最后时刻的“救火”场面。

2.       对基于构件开发的程序进行全面调试,用构件进行软件开发时,找出诸如内存未初始化、内存泄漏和内存覆盖等编程错误是特别困难的。必须对构件之间及构件内部的内存访问情况进行验证;使Purify 不但可以检查出编写的源代码中致命或破坏性的内存访问错误,而且还能检查出程序库中无权访问的源代码的错误。否有权访问其源代码,Purify 都能检查Microsoft 构件的问题,包括ActiveX控件、COM/DCOM 构件、ODBC 构件、DLL 、第三方构件以及C++Java 构件。

3.       powercheck 定制错误检查规则,可以按模块逐个调整所需的检查级别。这样可以把精力集中在最重要的代码上。简单选择“最小”或“准确”即可。“最小”插桩可以快速查出常见的运行写入错误和Windows API 错误;对于关键模块,“准确” 插桩检查将用行业强度检查来查找内存访问错误,这样就可以确定调试的优先级并更有效地工作

4.       通过对 api 掉用的验证扩展错误检查,在Windows 应用程序中,Windows API调用都是其重要的组成部分。一个应用程序可能使用成千上万次的Windows API 调用和COM 方法。存在内存访问错误的WindowsAPI 调用,可能会导致应用程序运行不正常或崩溃。对于Windows API 的检查,Rational Purify WinCheck 功能会验证直到最后一次WindowsAPI COM 方法的调用情况,包含GDI 句柄检查和对Windows 资源泄漏及错误指针等检查。

5.       Microsoft Visual Studio 集成在一起,可以快速获得Purify 的自动调试以及源代码编辑功能。Purify 带有既时调试功能,从而缩短查找、复审和修正错误所需的时间。

6.       Rational Purify 是对即将发布的实际C++工作版本或在无法获得源代码的情况下进行测试。无需特殊的工作版本或源代码即可发挥作用。

7.         在所有可能的地方查找错误,Rational Purify 除了能找出运行程序时发生的关键错误,还能告诉测试程序的代码覆盖率。如果安装了Rational PureCoveragePurify 则可以自动收集每次运行的代码覆盖数据,并报告已检查过的代码数量。将Purify 的错误检测和 PureCoverage 的代码覆盖分析结合在一起。

 

以下情况可引起内存的不可读或不可写

Array Bouds Read (ABR): 数组越界。

Beyond Stack Read (BSR):堆栈越界。

Free Memory Read (FMR): 空闲内存阅读。

Invalid Pointer Read(IPR): 非法指针阅读。

Null Pinter Read (NPR):空指针阅读。

Uninitialized Memory Read (UMR):未初始化内存阅读。

双击 Data Browser 窗口中的任何一个错误或提示前面的+ 号,就可以看到该错误的详细信息。如果被测程序包含源代码,则在错误的详细信息中列出错误的代码行并解释所造成的错误,相同的错误可能出显几次,特别是循环中的错误,可以通过设置Filter Manager 设置只显示自己目前要处理的错误类性

可以比较或着合并相同程序的测试结果:

Data Brower 里还可以把错误信息直接提交到ClearQuest

purify4

8.       可以检测的错误代码:

•ActiveX (OLE/OCX)控件

•COM 对象

•ODBC 构件

•Java 构件、applet 、类文件、JAR 文件

•DLL —包括MFC Microsoft Office插件

•Visual C/C++源代码

•Visual Basic应用程序内嵌的VisualC/C++构件

第三方和系统DLL

支持com 调用的应用程序中的所有Visual C/C++构件

9.  检查的错误类型有

堆阵相关错误(例如:未初始化内存的读取和复制错误,以及数组越界读写错误)

堆栈相关错误(例如:未初始化内存的读取和复制错误,以及堆栈越界读写错误)

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

•COM 相关错误(例如:COM API/接口调用失败)

指针错误(例如:无效指针和空指针的读写错误)

内存使用错误(例如:释放内存的读写错误、内存泄漏和释放内存匹配错误)

•Windows API 相关错误(例如:Windows API 函数参数错误和返回值错误)

句柄错误(例如:泄漏和句柄使用错误)