Ibm Rational Purify Article Index for
Ibm Rational
Website Links For
Ibm
 

Information About

Ibm Rational Purify





Information

  Name Purify
  Developer IBM Software
  Latest Release Version 70
  Latest Release Date June 6 , 2006
  Operating System Cross Platform
  Genre Profiler
  License Proprietary Software
  Website ibmcom


See also Purification for the sense of Refining .


Purify is a Memory Debugger program used by Software developers to detect memory access errors in programs, especially those written in C or C++ . It was originally written by Reed Hastings of Pure Software . Pure Software later merged with Atria Software to form Pure Atria Software, which in turn was later acquired by Rational Software , which in turn was acquired by IBM . It is functionally similar to other memory debuggers, such as Insure++ and Valgrind .


OVERVIEW

Purify allows dynamic verification, a process by which a program discovers errors that occur when the program runs, much like a Debugger . Static verification or Static Code Analysis , by contrast, involves detecting errors in the Source Code without ever compiling or running it, just by discovering logical inconsistencies. The Type Checking by a C Compiler is an example of static verification.

When a program is Linked with Purify, corrected verification code is automatically inserted into the executable by parsing and adding to the Object Code , including libraries. That way, if a memory error occurs, the program will print out the exact location of the error, the memory address involved, and other relevant information. Purify also includes Garbage Collection routines. These routines detect Memory Leak s, either at program exit or at any time, by calling the leak-detection functions from a debugger or from the program itself.

The errors that Purify discovers include array bounds reads and writes, trying to access unallocated memory, freeing unallocated memory (usually due to freeing the same memory for the second time), as well as memory leaks (allocated memory with no pointer reference). It is essential to note that most of these errors are not fatal (at least not at the site of the error), and often when just running the program there is no way to detect them, except by observing that ''something'' is wrong due to incorrect program behavior. Hence Purify helps enormously by detecting these errors and telling the programmer exactly where they occur. Because Purify works by instrumenting all the Object Code , it detects errors that occur inside of third-party or Operating System libraries. These errors are often caused by the programmer passing incorrect arguments to the library calls, or by misunderstandings about the protocols for freeing Data Structures used by the libraries. These are often the most difficult errors to find and fix.


DIFFERENCES WITH TRADITIONAL DEBUGGERS

The ability to detect non-fatal errors is a major distinction between Purify and similar programs from the usual Debugger s. By contrast, debuggers generally only allow the programmer to quickly find the sources of fatal errors, such as a program crash due to reading a null Pointer , but do not help to detect the non-fatal memory errors. Debugger s are useful for other things that Purify is not intended for, such as for stepping through the code line by line or examining the program's memory by hand at a particular moment of execution. In other words, these tools can complement each other for a skilled developer.

Purify also includes other functionality, such as high-performance Watchpoint s, which are of general use while using a debugger on one's code.

It is worth noting that using Purify makes the most sense in programming languages that leave memory management to the programmer. Hence, in Java , Lisp , or Visual Basic , for example, automatic memory management reduces occurrence of any Memory Leak s. These languages can however still have leaks; unnecessary references to objects will prevent the memory from being re-allocated. IBM has a product called Rational PurifyPlus to uncover these sorts of errors.


SUPPORTED PLATFORMS

Purify exists for Microsoft Windows on 32-bit X86 systems, Solaris on SPARC and X64 systems, HP-UX on PA-RISC systems, AIX on POWER systems, and Red Hat and SUSE Linux on x86 and x64 systems.


SEE ALSO



EXTERNAL LINKS