PurifyPlus es un programa depurador de memoria utilizado por desarrolladores de software para detectar errores de acceso a la memoria en programas, especialmente aquellos escritos en C o C++ . Fue escrito originalmente por Reed Hastings de Pure Software . [ 1 ] Pure Software se fusionó posteriormente con Atria Software para formar Pure Atria Software, que a su vez fue adquirida por Rational Software , que a su vez fue adquirida por IBM , y luego vendida a UNICOM Systems , Inc. el 31 de diciembre de 2014. Es funcionalmente similar a otros depuradores de memoria, como Insure++ , Valgrind y BoundsChecker .
Descripción general
PurifyPlus permite la verificación dinámica, un proceso mediante el cual un programa descubre errores que ocurren durante su ejecución, de forma similar a un depurador . La verificación estática o análisis estático de código , por el contrario, consiste en detectar errores en el código fuente sin compilarlo ni ejecutarlo, simplemente descubriendo inconsistencias lógicas. La comprobación de tipos de un compilador de C es un ejemplo de verificación estática.
Cuando un programa se enlaza con PurifyPlus, el código de verificación corregido se inserta automáticamente en el ejecutable mediante el análisis y la adición al código objeto , incluidas las bibliotecas. De esta forma, si se produce un error de memoria, el programa imprimirá la ubicación exacta del error, la dirección de memoria implicada y otra información relevante. PurifyPlus también detecta fugas de memoria . Por defecto, se genera un informe de fugas al finalizar el programa, pero también se puede generar llamando a la API de detección de fugas de PurifyPlus desde dentro de una aplicación instrumentada.
Los errores que detecta PurifyPlus incluyen lecturas y escrituras de límites de matrices, intentos de acceso a memoria no asignada, liberación de memoria no asignada (generalmente debido a la liberación de la misma memoria por segunda vez), así como fugas de memoria (memoria asignada sin referencia de puntero). La mayoría de estos errores no son fatales (al menos no en el lugar del error), y a menudo, al ejecutar el programa, no hay forma de detectarlos, excepto al observar que algo anda mal debido a un comportamiento incorrecto del programa. Por lo tanto, PurifyPlus ayuda detectando estos errores e indicando al programador exactamente dónde ocurren. Dado que PurifyPlus funciona instrumentando todo el código objeto , detecta errores que ocurren dentro de las bibliotecas de terceros o del sistema operativo . Estos errores a menudo son causados por el programador al pasar argumentos incorrectos a las llamadas a la biblioteca, o por malentendidos sobre los protocolos para liberar estructuras de datos que utilizan las bibliotecas. Estos suelen ser los errores más difíciles de encontrar y corregir.
Diferencias con los depuradores tradicionales
La capacidad de detectar errores no fatales es una diferencia fundamental entre PurifyPlus y programas similares de depuración . Por el contrario, los depuradores generalmente solo permiten al programador encontrar rápidamente el origen de errores fatales, como un fallo del programa debido a la desreferenciación de un puntero nulo , pero no ayudan a detectar errores de memoria no fatales. Los depuradores son útiles para otras tareas para las que PurifyPlus no está diseñado, como recorrer el código línea por línea o examinar la memoria del programa manualmente en un momento específico de la ejecución. En otras palabras, estas herramientas pueden complementarse entre sí para un desarrollador experimentado.
PurifyPlus también incluye otras funcionalidades, como puntos de observación de alto rendimiento , que resultan de utilidad general al utilizar un depurador en el código.
El uso de PurifyPlus resulta más conveniente en lenguajes de programación que delegan la gestión de memoria al programador. Por ejemplo, en Java , Lisp o Visual Basic , la gestión automática de memoria reduce la aparición de fugas de memoria . Sin embargo, estos lenguajes aún pueden presentar fugas; las referencias innecesarias a objetos impedirán la reasignación de memoria. IBM cuenta con un producto llamado Rational Application Developer para detectar este tipo de errores.
Plataformas compatibles
Plataformas C/C++ compatibles
Plataformas Java/.NET compatibles
Véase también
Referencias
- ↑ Purify: detección rápida de fugas de memoria y errores de acceso. Por Reed Hastings y Bob Joyce, conferencia técnica de Usenix, invierno de 1992.
Enlaces externos
- "Un estudio de sistemas para la detección de errores de ejecución en serie" realizado por el Grupo de Computación de Alto Rendimiento de la Universidad Estatal de Iowa.
- Depuradores
- Software de gestión de memoria
- Software de Rational Software
- Productos de IBM desinvertidos