Knowledge (XXG)

PurifyPlus

Source 📝

273:, 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. 240:
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
299:. 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. 233:, 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 245:
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
237:. 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. 253:
libraries. These errors are often caused by the programmer passing incorrect arguments to the library calls, or by misunderstandings about the protocols for freeing
269:. 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 283:
It is worth noting that using PurifyPlus makes the most sense in programming languages that leave memory management to the programmer. Hence, in
241:
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
669: 664: 199:
PurifyPlus allows dynamic verification, a process by which a program discovers errors that occur when the program runs, much like a
674: 270: 645:"A Survey of Systems for Detecting Serial Run-Time Errors" by The Iowa State University’s High Performance Computing Group 229:
with PurifyPlus, corrected verification code is automatically inserted into the executable by parsing and adding to the
284: 65: 265:
The ability to detect non-fatal errors is a major distinction between PurifyPlus and similar programs from the usual
167:. Pure Software later merged with Atria Software to form Pure Atria Software, which in turn was later acquired by 288: 216: 152: 644: 204: 108: 91: 659: 226: 168: 628: 599: 250: 103: 81: 594: 254: 144: 96: 119: 211:
without ever compiling or running it, just by discovering logical inconsistencies. The
604: 176: 179:, Inc. on Dec 31, 2014. It is functionally similar to other memory debuggers, such as 653: 212: 188: 164: 160: 54: 41: 292: 257:
used by the libraries. These are often the most difficult errors to find and fix.
151:
developers to detect memory access errors in programs, especially those written in
17: 609: 296: 246: 234: 230: 208: 180: 277: 48: 36: 266: 219: 200: 184: 148: 631:
by Reed Hastings and Bob Joyce, Usenix Winter 1992 technical conference.
276:
PurifyPlus also includes other functionality, such as high-performance
295:, for example, automatic memory management reduces occurrence of any 156: 280:, which are of general use while using a debugger on one's code. 172: 629:
Purify: fast detection of memory leaks and access errors.
249:, it detects errors that occur inside of third-party or 114: 102: 90: 80: 64: 47: 35: 207:, by contrast, involves detecting errors in the 8: 499:Foundation, Essential, Standard, Data Center 30: 29: 516: 311: 621: 261:Differences from traditional debuggers 222:is an example of static verification. 7: 25: 539:(unmanaged code) data collection 446:(Server/Desktop) base through 7.9 441:(Server/Desktop) base through 8.9 436:(Server/Desktop) base through 9.4 405:(Server/Desktop) base through 7.9 400:(Server/Desktop) base through 8.9 395:(Server/Desktop) base through 9.4 171:, which in turn was acquired by 572:(managed code) data collection 159:. It was originally written by 553:code coverage data collection 71:8.2 / September 20, 2024 53:UNICOM Systems, a division of 1: 513:Supported Java/.NET platforms 497:Microsoft Windows Server 2012 492:Microsoft Windows Server 2016 487:Microsoft Windows Server 2019 691: 670:Rational Software software 665:Memory management software 578:3.0 through 4.5 used with 567: 548: 534: 529: 472: 467: 426: 387: 382: 356: 332: 327: 321:Operating system versions 203:. Static verification or 530: 468: 383: 328: 308:Supported C/C++ platforms 76: 60: 318:Processor architectures 580:Microsoft Visual Studio 543:Microsoft Visual Studio 504:Microsoft Visual Studio 175:, and then divested to 86:Windows, Linux, Solaris 27:Memory debugger program 675:Divested IBM products 523:Data collection type 494:Standard, Data Center 489:Standard, Data Center 526:Runtime environment 482:Microsoft Windows 10 205:static code analysis 109:Proprietary software 303:Supported platforms 32: 18:IBM Rational Purify 582:2010 through 2022 545:2010 through 2022 506:2010 through 2022 225:When a program is 37:Original author(s) 586: 585: 510: 509: 484:base through 21H1 456:base through 12.5 451:base through 15.5 415:base through 12.5 410:base through 15.5 378:5.10 through 5.15 366:base through 11.4 352:5.10 through 5.15 340:base through 11.4 315:Operating system 169:Rational Software 138: 137: 31:UNICOM PurifyPlus 16:(Redirected from 682: 632: 626: 600:Programming tool 564:1.5 through 1.8 517: 345:base through U11 312: 251:operating system 147:program used by 134: 131: 129: 127: 125: 123: 121: 82:Operating system 33: 21: 690: 689: 685: 684: 683: 681: 680: 679: 650: 649: 641: 636: 635: 627: 623: 618: 595:Memory debugger 591: 560: 515: 500: 495: 490: 485: 477: 475: 464: 457: 452: 447: 442: 437: 429: 423: 416: 411: 406: 401: 396: 379: 372: 367: 359: 353: 346: 341: 334:Sun UltraSPARC 310: 305: 263: 255:data structures 197: 145:memory debugger 118: 97:Memory debugger 72: 28: 23: 22: 15: 12: 11: 5: 688: 686: 678: 677: 672: 667: 662: 652: 651: 648: 647: 640: 639:External links 637: 634: 633: 620: 619: 617: 614: 613: 612: 607: 605:Dynamic memory 602: 597: 590: 587: 584: 583: 576:.NET Framework 573: 566: 565: 554: 547: 546: 540: 533: 532: 528: 527: 524: 521: 514: 511: 508: 507: 501: 479: 471: 470: 466: 465: 458: 431: 425: 424: 417: 390: 386: 385: 381: 380: 373: 371:U6 through U11 361: 355: 354: 347: 335: 331: 330: 326: 325: 322: 319: 316: 309: 306: 304: 301: 262: 259: 196: 193: 177:UNICOM Systems 136: 135: 116: 112: 111: 106: 100: 99: 94: 88: 87: 84: 78: 77: 74: 73: 70: 68: 66:Stable release 62: 61: 58: 57: 51: 45: 44: 39: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 687: 676: 673: 671: 668: 666: 663: 661: 658: 657: 655: 646: 643: 642: 638: 630: 625: 622: 615: 611: 608: 606: 603: 601: 598: 596: 593: 592: 588: 581: 577: 574: 571: 568: 563: 558: 555: 552: 549: 544: 541: 538: 535: 525: 522: 519: 518: 512: 505: 502: 498: 493: 488: 483: 480: 473: 462: 459: 455: 450: 445: 440: 435: 432: 427: 421: 418: 414: 409: 404: 399: 394: 391: 388: 377: 374: 370: 365: 362: 357: 351: 348: 344: 339: 336: 333: 323: 320: 317: 314: 313: 307: 302: 300: 298: 294: 290: 286: 281: 279: 274: 272: 268: 260: 258: 256: 252: 248: 244: 238: 236: 232: 228: 223: 221: 218: 214: 213:type checking 210: 206: 202: 194: 192: 190: 189:BoundsChecker 186: 182: 178: 174: 170: 166: 165:Pure Software 162: 161:Reed Hastings 158: 154: 150: 146: 142: 133: 117: 113: 110: 107: 105: 101: 98: 95: 93: 89: 85: 83: 79: 75: 69: 67: 63: 59: 56: 55:UNICOM Global 52: 50: 46: 43: 42:Pure Software 40: 38: 34: 19: 624: 579: 575: 569: 561: 556: 550: 542: 536: 503: 496: 491: 486: 481: 463:4 through 11 460: 453: 448: 443: 438: 433: 422:4 through 11 419: 412: 407: 402: 397: 392: 389:Intel IA-32 375: 368: 363: 349: 342: 337: 297:memory leaks 293:Visual Basic 282: 275: 264: 242: 239: 235:memory leaks 224: 198: 140: 139: 49:Developer(s) 610:Memory leak 559:5 through 8 474:Intel IA-32 461:GNU gcc/g++ 420:GNU gcc/g++ 278:watchpoints 247:object code 231:object code 209:source code 130:/purifyplus 654:Categories 616:References 369:Solaris 10 364:Solaris 11 343:Solaris 10 338:Solaris 11 324:Compilers 141:PurifyPlus 660:Debuggers 520:Platform 430:Intel 64 376:Sun C/C++ 360:Intel 64 350:Sun C/C++ 267:debuggers 243:something 128:/products 124:.unicomsi 122:.teamblue 589:See also 531:Windows 476:Intel 64 469:Windows 329:Solaris 220:compiler 201:debugger 195:Overview 185:Valgrind 181:Insure++ 149:software 562:SUN JRE 557:IBM JRE 478:AMD 64 454:SLES 12 449:SLES 15 413:SLES 12 408:SLES 15 271:pointer 115:Website 104:License 444:RHEL 7 439:RHEL 8 434:RHEL 9 403:RHEL 7 398:RHEL 8 393:RHEL 9 384:Linux 227:linked 537:C/C++ 428:AMD64 358:AMD64 291:, or 215:by a 187:and 143:is a 570:.NET 551:Java 289:Lisp 285:Java 126:.com 92:Type 173:IBM 163:of 157:C++ 155:or 120:www 656:: 287:, 191:. 183:, 217:C 153:C 132:/ 20:)

Index

IBM Rational Purify
Original author(s)
Pure Software
Developer(s)
UNICOM Global
Stable release
Operating system
Type
Memory debugger
License
Proprietary software
www.teamblue.unicomsi.com/products/purifyplus/
memory debugger
software
C
C++
Reed Hastings
Pure Software
Rational Software
IBM
UNICOM Systems
Insure++
Valgrind
BoundsChecker
debugger
static code analysis
source code
type checking
C
compiler

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.