PurifyPlus es un programa de depuración de memoria utilizado por los desarrolladores de software para detectar errores de acceso a la memoria en los programas, especialmente aquellos escritos en C o C ++ . Fue escrito originalmente por Reed Hastings de Pure Software . [1] Más tarde, Pure Software se fusionó con Atria Software para formar Pure Atria Software, que a su vez fue adquirido por Rational Software , que a su vez fue adquirido por IBM y luego cedido a UNICOM Systems , Inc. el 31 de diciembre de 2014. es funcionalmente similar a otros depuradores de memoria, como Insure ++ , Valgrindy BoundsChecker .
Autor (es) original (es) | Software puro |
---|---|
Desarrollador (es) | UNICOM Systems, una división de UNICOM Global |
Lanzamiento estable | 7.5 / 26 de enero de 2017 |
Sistema operativo | Windows, Linux, Solaris, AIX |
Tipo | Depurador de memoria |
Licencia | Software propietario |
Sitio web | teamblue |
Descripción general
PurifyPlus permite la verificación dinámica, un proceso mediante el cual un programa descubre errores que ocurren cuando se ejecuta el programa, al igual que un depurador . La verificación estática o el análisis de código estático , por el contrario, implica detectar errores en el código fuente sin ni siquiera compilarlo o ejecutarlo, simplemente descubriendo inconsistencias lógicas. La verificación de tipos por parte de un compilador de C es un ejemplo de verificación estática.
Cuando un programa está vinculado con PurifyPlus, el código de verificación corregido se inserta automáticamente en el ejecutable al analizar y agregar al código del objeto , incluidas las bibliotecas. De esa manera, si ocurre un error de memoria, el programa imprimirá la ubicación exacta del error, la dirección de memoria involucrada y otra información relevante. PurifyPlus también detecta pérdidas de memoria . De forma predeterminada, se genera un informe de fugas al salir del programa, pero también se puede generar llamando a la API de detección de fugas PurifyPlus desde una aplicación instrumentada.
Los errores que descubre PurifyPlus incluyen lectura y escritura de límites de matriz, intento de acceder a memoria no asignada, liberación de memoria no asignada (normalmente debido a la liberación de la misma memoria por segunda vez), así como pérdidas de memoria (memoria asignada sin referencia de puntero). La mayoría de estos errores no son fatales (al menos no en el sitio del error) y, a menudo, cuando se ejecuta el programa, no hay forma de detectarlos, excepto observando que algo está mal debido al comportamiento incorrecto del programa. Por lo tanto, PurifyPlus ayuda a detectar estos errores y decirle al programador exactamente dónde ocurren. Debido a que PurifyPlus funciona instrumentando todo el código de objeto , detecta errores que ocurren dentro de bibliotecas de terceros o del sistema operativo . Estos errores a menudo son causados por el programador que pasa argumentos incorrectos a las llamadas a la biblioteca, o por malentendidos acerca de los protocolos para liberar las estructuras de datos utilizadas por las bibliotecas. A menudo, estos son los errores más difíciles de encontrar y corregir.
Diferencias con los depuradores tradicionales
La capacidad de detectar errores no fatales es una distinción importante entre PurifyPlus y programas similares de los depuradores habituales . Por el contrario, los depuradores generalmente solo permiten al programador encontrar rápidamente las fuentes de errores fatales, como un bloqueo del programa debido a la desreferenciación de un puntero nulo , pero no ayudan a detectar los errores de memoria no fatales. Los depuradores son útiles para otras cosas para las que PurifyPlus no está diseñado, como recorrer el código línea por línea o examinar la memoria del programa a mano en un momento particular de ejecución. En otras palabras, estas herramientas pueden complementarse entre sí para un desarrollador experto.
PurifyPlus también incluye otras funciones, como los puntos de observación de alto rendimiento , que son de uso general cuando se usa un depurador en el código de uno.
Vale la pena señalar que el uso de PurifyPlus tiene más sentido en los lenguajes de programación que dejan la gestión de la memoria al programador. Por lo tanto, en Java , Lisp o Visual Basic , por ejemplo, la administración automática de memoria reduce la ocurrencia de pérdidas de memoria . Sin embargo, estos idiomas aún pueden tener filtraciones; las referencias innecesarias a objetos evitarán que se reasigne la memoria. IBM tiene un producto llamado Rational Application Developer para descubrir este tipo de errores.
Plataformas compatibles
Sistema operativo | Arquitecturas de procesador | Versiones del sistema operativo | Compiladores |
---|---|---|---|
Solaris | |||
Sun UltraSPARC | Base de Solaris 11 hasta 11.2 Base de Solaris 10 hasta U11 | Sun C / C ++ 5.8 a 5.13 GNU gcc / g ++ 4.0 a 4.8 | |
AMD64 Intel 64 | Base de Solaris 11 hasta 11.2 Solaris 10 U6 hasta U11 | Sun C / C ++ 5.8 a 5.10 GNU gcc / g ++ 4.0 a 4.8 | |
Linux | |||
Intel IA-32 | RHEL 6 (servidor / escritorio) base a 6.6 RHEL 5 (servidor / escritorio) base a 5.11 SLES 11 base a SP3 | GNU gcc / g ++ 4.0 a 5.2 Intel icc 11.0 a 11.1 | |
AMD64 Intel 64 | RHEL 6 (servidor / escritorio) base a 6.6 RHEL 5 (servidor / escritorio) base a 5.11 SLES 11 base a SP3 | GNU gcc / g ++ 4.0 a 5.2 Intel icc 11.0 a 11.1 | |
AIX | |||
IBM POWER7 | AIX 7.1 base a TL3 AIX 6.1 base a TL9 | IBM XL C / C ++ 12.1 IBM XL C / C ++ 11.0 IBM XL C / C ++ 10.1 | |
Ventanas | |||
IBM POWER6 | Base AIX 6.1 hasta TL9 | IBM XL C / C ++ 12.1 IBM XL C / C ++ 11.0 IBM XL C / C ++ 10.1 | |
Ventanas | |||
Intel IA-32 Intel 64 AMD 64 | Microsoft Windows 10 base, Anniversary Edition Microsoft Windows 8 base hasta 8.1 Microsoft Windows 7 base hasta SP1 Microsoft Windows Server 2016 Standard, Data Center Microsoft Windows Server 2012 Foundation, Essential, Standard, Data Center Microsoft Windows Server 2008 Enterprise, Standard, Data Center, base a SP2 Microsoft Windows Server 2008 R2 Foundation, Enterprise, Standard, Data Center, base a SP1 | Visual Studio 2008 hasta 2015 |
Plataforma | Tipo de recopilación de datos | Entorno de ejecución |
---|---|---|
Ventanas | ||
Recopilación de datos C / C ++ (código no administrado) | Microsoft Visual Studio 2008 hasta 2015 | |
Recopilación de datos de cobertura de código Java | IBM JRE 5 a 8 SUN JRE 1.5 a 1.8 | |
Recopilación de datos .NET (código administrado) | .NET Framework 2.0 a 4.5 utilizado con Microsoft Visual Studio 2008 a 2015 |
Ver también
Referencias
- ^ Purificar: detección rápida de fugas de memoria y errores de acceso. por Reed Hastings y Bob Joyce, Conferencia técnica de Usenix Winter 1992.