Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
PurifyPlus
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Memory debugger program}} {{Infobox software | name = UNICOM PurifyPlus |logo = | logo alt = Unicom Systems corporate logo | screenshot = | caption = | author = [[Pure Software]] | developer = UNICOM Systems, a division of [[UNICOM Global]] | latest_release_version = 8.2 | latest_release_date = September 20, 2024 | operating_system = Windows, Linux, Solaris | genre = [[Memory debugger]] | license = [[Proprietary software]] | website = {{URL|https://www.teamblue.unicomsi.com/products/purifyplus/}} }} '''PurifyPlus''' is a [[memory debugger]] program used by [[software]] developers to detect memory access errors in programs, especially those written in [[C (programming language)|C]] or [[C++]]. It was originally written by [[Reed Hastings]] of [[Pure Software]].<ref>[https://web.stanford.edu/class/cs343/resources/purify.pdf Purify: fast detection of memory leaks and access errors.] by Reed Hastings and Bob Joyce, Usenix Winter 1992 technical conference.</ref> 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]], and then divested to [[UNICOM Systems]], Inc. on Dec 31, 2014. It is functionally similar to other memory debuggers, such as [[Insure++]], [[Valgrind]] and [[BoundsChecker]]. ==Overview== PurifyPlus 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 (programming language)|C]] [[compiler]] is an example of static verification. When a program is [[Linker (computing)|linked]] with PurifyPlus, 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. PurifyPlus also detects [[memory leak]]s. By default, a leak report is generated at program exit but can also be generated by calling the PurifyPlus leak-detection API from within an instrumented application. The errors that PurifyPlus 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). 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 PurifyPlus helps by detecting these errors and telling the programmer exactly where they occur. Because PurifyPlus 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 from traditional debuggers== The ability to detect non-fatal errors is a major distinction between PurifyPlus 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 dereferencing a null [[pointer (computer programming)|pointer]], but do not help to detect the non-fatal memory errors. Debuggers are useful for other things that PurifyPlus 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. PurifyPlus also includes other functionality, such as high-performance [[Breakpoint|watchpoints]], which are of general use while using a debugger on one's code. Using PurifyPlus makes the most sense in programming languages that leave memory management to the programmer. Hence, in [[Java (programming language)|Java]], [[Lisp programming language|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 Application Developer to uncover these sorts of errors. ==Supported platforms== === Supported C/C++ platforms === {| class="wikitable" ! Operating system ! Processor architectures ! Operating system versions ! Compilers |- valign="top" | rowspan="3" | Solaris |- valign="top" | Sun UltraSPARC | '''Solaris 11''' base through 11.4<br />'''Solaris 10''' base through U11<br /> | ''' Sun C/C++''' 5.10 through 5.15<br /> |- valign="top" | AMD64<br />Intel 64 | '''Solaris 11''' base through 11.4<br />'''Solaris 10''' U6 through U11<br /> | '''Sun C/C++''' 5.10 through 5.15<br /> |- valign="top" | rowspan="3" | Linux |- valign="top" | Intel IA-32 |'''RHEL 9''' (Server/Desktop) base through 9.4<br />'''RHEL 8''' (Server/Desktop) base through 8.9<br />'''RHEL 7''' (Server/Desktop) base through 7.9<br /> '''SLES 15''' base through 15.5<br />'''SLES 12''' base through 12.5<br/> | '''GNU gcc/g++''' 4 through 11<br /> |- valign="top" | AMD64<br />Intel 64 |'''RHEL 9''' (Server/Desktop) base through 9.4<br />'''RHEL 8''' (Server/Desktop) base through 8.9<br />'''RHEL 7''' (Server/Desktop) base through 7.9<br /> '''SLES 15''' base through 15.5<br />'''SLES 12''' base through 12.5<br/> | '''GNU gcc/g++''' 4 through 11<br /> |- valign="top" | rowspan="2" | Windows |- valign="top" | Intel IA-32<br/>Intel 64<br/>AMD 64 | '''Microsoft Windows 10''' base through 21H1<br />'''Microsoft Windows Server 2019''' Standard, Data Center<br />'''Microsoft Windows Server 2016''' Standard, Data Center<br />'''Microsoft Windows Server 2012''' Foundation, Essential, Standard, Data Center<br /> | '''Microsoft Visual Studio''' 2010 through 2022 |} === Supported Java/.NET platforms === {| class="wikitable" ! Platform ! Data collection type ! Runtime environment |- valign="top" | rowspan="4" | Windows |- valign="top" | '''C/C++''' (unmanaged code) data collection | '''Microsoft Visual Studio''' 2010 through 2022 |- valign="top" | '''Java''' code coverage data collection | '''IBM JRE''' 5 through 8<br />'''SUN JRE''' 1.5 through 1.8 |- valign="top" | '''.NET''' (managed code) data collection | '''.NET Framework''' 3.0 through 4.5 used with '''Microsoft Visual Studio''' 2010 through 2022 |} == See also == * [[Memory debugger]] * [[Programming tool]] * [[Dynamic memory]] * [[Memory leak]] ==References== {{reflist}} ==External links== * [http://jjc.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] {{DEFAULTSORT:Purify}} [[Category:Debuggers]] [[Category:Memory management software]] [[Category:Rational Software software|Purify]] [[Category:Divested IBM products]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)