Esta guía de la herramienta se aplica para su utilización tanto en sistemas Microsoft Windows como con sistemas UNIX.
Las herramientas de PurifyPlus incluyen Rational Purify, Rational PureCoverage y Rational Quantify.
Si desea
obtener más información sobre las herramientas de PurifyPlus, consulte el manual de Iniciación a de PurifyPlus
(versión Windows o versión UNIX).
Para obtener información paso a paso sobre la utilización de las herramientas de PurifyPlus, consulte la
ayuda en línea de la herramienta.
Análisis del rendimiento de tiempo de ejecución
El análisis del rendimiento de tiempo de ejecución incluye lo siguiente:
-
Detección de fugas y errores de memoria (programas C/C++ en Windows y UNIX).
-
Utilice Purify para determinar estos problemas, tanto en el código como en los componentes que utiliza el
software, aunque no disponga del origen.
-
Utilice PureCoverage para garantizar la cobertura de todo el código. (También puede utilizar PureCoverage,
independientemente de Purify, para recopilar datos de cobertura para código gestionado .NET, Java y C/C++).
-
Perfilado del uso de memoria (código gestionado .NET y Java en Windows). Gracias a Purify puede ver dónde se
utiliza la memoria de modo ineficaz.
-
Perfilado del rendimiento (Windows y UNIX). Gracias a Quantify puede ver dónde tarda más tiempo el programa,
lo que le permite eliminar cuellos de botella de rendimiento importantes.
El resultado de analizar el tiempo de ejecución con herramientas de PurifyPlus es código sin errores que se ejecuta con
la máxima eficacia.
Pasos de la herramienta
Para llevar a cabo el análisis de tiempo de ejecución utilizando las herramientas de PurifyPlus debe:
1. Ejecutar el programa en Purify para recopilar errores, fugas y datos de cobertura
(programas C/C++ en Windows y UNIX)
Purify detecta errores de tiempo de ejecución difíciles de localizar, incluidas fugas de memoria en el código y en los
componentes que utiliza el software. Informa de errores de memoria como, por ejemplo, errores de límites de matriz,
acceso a través de punteros pendientes, lecturas de memoria no inicializadas, errores de asignación de memoria y fugas
de memoria, lo que le permite resolverlos antes de que produzcan posibles daños. Si tiene Rational PureCoverage en el
sistema, también puede ver las partes del código que ha probado, y las que no.
Empiece ejecutando el programa en Purify:
-
En un sistema Windows:
-
Si trabaja en Microsoft Visual Studio 6, en primer lugar seleccione el elemento de menú Purify >
Engage Purify Integration de Visual Studio. Si tiene PureCoverage en el sistema, seleccione también
Purify > Collect Coverage Data, indicando a Purify que supervise la cobertura de código. A
continuación, ejecute el programa en Visual Studio tal como lo hace normalmente.
-
Si utiliza Purify como un programa autónomo, no integrado con Visual Studio, seleccione Archivo >
Ejecutar. En el diálogo Ejecutar programa, seleccione Recopilar errores, fugas y datos de
cobertura (o bien, Recopilar errores y datos de fuga si no tiene PureCoverage en el sistema) y
ejecute el programa.
-
En un sistema UNIX, añada la palabra purify. Póngalo al principio de la
línea de compilación/enlace. Si tiene PureCoverage en el sistema, añada también purecov . Por ejemplo:
% purify purecov cc -g hello_world.c
A continuación, ejecute el programa tal como lo hace normalmente.
Cuando utiliza el programa, Purify lista errores de tiempo de ejecución en el visor de Purify. Al salir del programa,
Purify informa sobre las fugas de memoria.
Explore las cabeceras de los mensajes para identificar los errores críticos. Amplíe los mensajes para ver información
de diagnóstico detallada, incluido el código que ha generado el error. Desde el visor puede abrir el código fuente en
el editor, en la línea en la que se ha producido el error y corregirlo directamente.
Una vez que haya corregido los errores y vuelto a compilar el programa, verifique las correcciones ejecutando de nuevo
el programa actualizado y comparando los nuevos resultados con los de la ejecución anterior. Repita el ciclo de
instrumentación y ejecución, análisis y corrección hasta que el programa se ejecute sin errores.
Si ha recopilado datos de cobertura para las ejecuciones del programa, también puede ver las partes del código en las
que no ha comprobado si hay errores. Utilice esta información para ajustar el ámbito del análisis de tiempo de
ejecución a fin de localizar todos los errores del programa, dondequiera que se produzcan.
Para obtener más información, busque los temas del índice de la ayuda en línea de Purify que tratan
sobre:
-
ejecución de programas
-
mensajes de Purify
-
código fuente
-
datos de cobertura
2. Ejecutar el programa en Purify para detectar el uso ineficaz de la memoria (código
gestionado .NET y Java en Windows)
Gracias a Purify, puede identificar problemas de memoria de código gestionado .NET y Java. Utilizando Purify, puede
determinar:
-
cuánta memoria está utilizando el programa
-
cuánta memoria nueva consume el programa para un conjunto de acciones determinado
-
qué métodos y proyectos del programa consumen cuánta memoria
-
qué objetos impiden la recopilación de basura de objetos no necesarios
-
dónde sería aconsejable forzar una recopilación de basura para mejorar el rendimiento
Empiece ejecutando el programa en Purify.
-
Si trabaja en Microsoft Visual Studio .NET, IBM WSWB, o IBM WSS AD, en primer lugar seleccione el elemento de menú
PurifyPlus > Purify > Engage Purify Integration y, a continuación, ejecute el programa tal
como lo hace normalmente.
-
Si utiliza Purify como un programa autónomo, no integrado con Visual Studio .NET o WSWB/WSS AD, seleccione
Archivo > Ejecutar en la interfaz de usuario de Purify. En el diálogo Ejecutar programa, seleccione
Recopilar datos de perfilado de la memoria y ejecute el programa.
Una vez que el programa haya finalizado los procedimientos de inicialización, utilice el mandato de instantánea de
Purify para establecer los puntos de referencia del uso de la memoria en ese momento. La instantánea es la base para
investigar el modo en el que el programa utiliza la memoria cuando se ejecuta.
Cuando tenga la instantánea, puede capturar un registro de la memoria que utiliza el programa cuando se ejecuta.
Ejecute las partes del programa que sospecha que tienen fugas de memoria. Purify muestra un gráfico de asignación de
memoria en el que se visualizan las variaciones en tiempo real del uso de memoria actual. Cuando observe un aumento de
la memoria asignada, tome otra instantánea.
Compare ambas instantáneas para identificar métodos que puedan tener fugas de memoria. Salga del programa y compare (o
"diff") las dos instantáneas. Purify visualiza un gráfico de llamada en el que se muestran los métodos que son
responsables de la mayor cantidad de memoria asignada durante la ejecución del programa, entre el tiempo en el que ha
tomado la primera y la segunda instantánea. Se puede centrar en métodos específicos del gráfico de llamada para
investigarlas con más detalle.
Si la memoria asignada a un método no se esperaba que fuera tan importante, examine el código fuente y revíselo, si
fuera necesario, para liberar memoria cuando ya no la necesite.
Una vez que haya identificado métodos que parecen tener problemas de memoria, analícelos a nivel de objeto. Busque los
objetos que se deberían, pero no se han liberado y recopilado como basura, quizá debido a que otros objetos retienen
una referencia innecesaria a estos.
Para obtener más
información, busque lo siguiente en el índice de la ayuda en línea de Purify:
-
ejecución de programas
-
comparación de ejecuciones
-
navegador de datos
Quantify proporciona un conjunto de datos de rendimiento fácil de interpretar, preciso y completo para el programa y
sus componentes, que le permite identificar y eliminar cuellos de botella de rendimiento del código.
Empiece a ejecutar el programa en Quantify para recopilar datos de rendimiento:
Cuando utiliza el código, Quantify registra datos sobre el rendimiento del sistema y muestra la actividad de sus hebras
y fibras. Al salir del programa, Quantify tiene un perfil preciso sobre el rendimiento que se puede utilizar para
buscar y diagnosticar cuellos de botella.
La visualización de los datos de Quantify incluye:
-
una ventana Gráfico de llamada, en la que se representa gráficamente el rendimiento y la estructura de llamada de
las funciones en el programa
-
una ventana Lista de funciones clasificable, en la que se listan todas las funciones con datos de rendimiento
-
una ventana Detalles de función, en la que se muestran datos de una función específica, sus llamadores y sus
descendientes
-
una ventana Origen anotado, en la que se muestran datos de rendimiento línea a línea en una copia del código fuente
Los datos que ha recopilado le permiten identificar cuellos de botella de rendimiento como, por ejemplo, cálculos y
nuevos cálculos innecesarios, cálculos prematuros o llamadas a bibliotecas excesivas o costosas.
Después de modificar el código para eliminar o minimizar los cuellos de botella, vuelva a ejecutar el programa
actualizado en Quantify y compare los nuevos resultados con los de la ejecución anterior creando un conjunto de datos
"diff", en el que se proporcionen indicaciones claras de las mejoras y regresiones del rendimiento.
Para obtener más información, busque los temas del índice de la ayuda en línea de Quantify que tratan sobre:
-
ejecución de programas
-
comparación de ejecuciones
-
ventana de gráfico de llamada
-
ventana de origen anotado
|