IBM Rational Purify

IBM Rational Purify

Infobox_Software
name = Purify



caption =
developer = IBM Rational
latest_release_version = 7.0.0.0-010 (UNIX) 7.0.0.0-007 (Windows)
latest_release_date = February 22, 2008
operating_system = Windows, Linux, Solaris, AIX, HP-UX
genre = Memory debugger
license = Proprietary software
website = [http://www.ibm.com/software/awdtools/purifyplus/ ibm.com]
:"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 detects memory leaks. By default, a leak report is generated at program exit but can also be generated by calling the Purify leak-detection API from within an instrumented application.

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 debuggers. By contrast, debuggers generally only allow the programmer to quickly find the sources of fatal errors, such as a program crash due to dereferencing a null pointer, but do not help to detect the non-fatal memory errors. Debuggers 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 watchpoints, 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 leaks. 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.

upported platforms


See also

* Memory debugger
* Programming tool
* Dynamic memory
* Memory leak
* Valgrind
* Insure++

External links

* [http://www.ibm.com/software/awdtools/purify/?S_TACT=105AGY59&S_CMP=09&ca=dtl-0903 Rational's "Purify" site]
* [http://www.ibm.com/software/awdtools/purifyplus/?S_TACT=105AGY59&S_CMP=09&ca=dtl-0903 Rational's "PurifyPlus" site]
* [http://www.ibm.com/developerworks/rational/products/purifyplus?S_TACT=105AGY59&S_CMP=09&ca=dtl-0903 IBM developerWork's "PurifyPlus" site]
* [http://www.ibm.com/developerworks/downloads/r/rpp/?S_TACT=105AGY59&S_CMP=09&ca=dtl-0903 Free trial download of Rational's "PurifyPlus" from IBM developerWorks]
*Article " [http://www.ibm.com/developerworks/rational/library/06/0822_satish-giridhar/ Navigating "C" in a "leaky" boat? Try Purify.] " by Satish Chandra Gupta and Giridhar Sreenivasamurthy
*Article " [http://www.ibm.com/developerworks/rational/library/08/0205_gupta-gaurav/ Advanced features of IBM Rational Purify: Debugging with Purify] " by Satish Chandra Gupta and Anand Gaurav
*Article " [http://www.ibm.com/developerworks/rational/library/08/0226_gupta-gaurav/ Advanced features of IBM Rational Purify: Customizing Purify instrumentation and reporting] " by Satish Chandra Gupta and Anand Gaurav
*Article " [http://www.ibm.com/developerworks/rational/library/08/0205_gupta-gaurav/index.html Advanced features of IBM Rational Purify: Debugging with Purify] by Satish Chandra Gupta and Anand Gaurav"
*Article " [http://www.devx.com/ibmrational/Article/31776 Rational PurifyPlus Delivers Unique SOA Benefits] " by Rikki Kirzner
* [http://grl.public.iastate.edu/Runtime.errors.Paper.March4.2006.pdf "A Survey of Systems for Detecting Serial Run-Time Errors" by The Iowa State University’s High Performance Computing Group]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Purify — may refer to: * Purification, the act or process of purifying * IBM Rational Purify, in computing, debugger software …   Wikipedia

  • Rational Software — Rational Machines was founded by Paul Levy and Mike Devlin in 1981 to provide tools to expand the use of modern software engineering practices, particularly explicit modular architecture and iterative development. Rational was sold for US$2.1… …   Wikipedia

  • Динамический анализ кода — (англ. Dynamic program analysis)  анализ программного обеспечения, выполняемый при помощи выполнения программ на реальном или виртуальном процессоре (анализ, выполняемый без запуска программ называется статический анализ кода). Утилиты… …   Википедия

  • Debugger — A debugger or debugging tool is a computer program that is used to test and debug other programs (the target program). The code to be examined might alternatively be running on an instruction set simulator (ISS), a technique that allows great… …   Wikipedia

  • Memory debugger — A memory debugger is a programming tool for finding memory leaks and buffer overflows. These are due to bugs related to the allocation and deallocation of dynamic memory. Programs written in languages that have garbage collection, such as managed …   Wikipedia

  • Duma (software) — Detect Unintended Memory Access (or DUMA) is a memory debugger. It consists of a library which programmers can link into their code to override the C standard library and C++ memory management functions. DUMA triggers a program crash when the… …   Wikipedia

  • Отладчик использования памяти — (англ. memory debugger)  инструментальное программное обеспечение для обнаружения утечек памяти и переполнений буфера. Это происходит из за ошибок, связанных с выделением и освобождением динамической памяти. Программы, написанные на… …   Википедия

  • Memory leak — A memory leak, in computer science (or leakage, in this context), occurs when a computer program consumes memory but is unable to release it back to the operating system. In object oriented programming, a memory leak happens when an object is… …   Wikipedia

  • Type system — Type systems Type safety Inferred vs. Manifest Dynamic vs. Static Strong vs. Weak Nominal vs. Structural Dependent typing Duck typing Latent typing Linear typing Uniqueness typing …   Wikipedia

  • Dynamic program analysis — is the analysis of computer software that is performed by executing programs built from that software system on a real or virtual processor. For dynamic program analysis to be effective, the target program must be executed with sufficient test… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”