Instrucciones de la herramienta: Análisis del rendimiento de tiempo de ejecución utilizando las herramientas de Rational PurifyPlus (Windows y UNIX)
En esta guía de la herramienta se describe la utilización de las herramientas de Rational PurifyPlus para conseguir código libre de fugas y errores de memoria, además de permitir la utilización eficaz de la memoria y facilitar un rendimiento óptimo.
Herramienta: Rational PurifyPlus
Relaciones
Descripción principal

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.

icono Publicación 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).

icono de publicación de ayuda 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.

icono de publicación de ayuda 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.  

icono de publicación de ayuda 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

3. Ejecutar el programa en Quantify para localizar cuellos de botella de rendimiento (Windows y UNIX).

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:

  • En un sistema Windows:
    • Si trabaja en Microsoft Visual Studio 6, en primer lugar seleccione el elemento de menú de Visual Studio Quantify > Engage Quantify Integration. A continuación, ejecute el programa en Visual Studio tal como lo hace normalmente.
    • Si trabaja en Microsoft Visual Studio .NET, IBM WSWB o IBM WSS AD, seleccione el elemento de menú PurifyPlus > Quantify > Engage Quantify Integration y, a continuación, ejecute el programa tal como lo hace normalmente.
    • Si utiliza Quantify como un programa autónomo, no integrado con Visual Studio o WSWB/WSS AD, seleccione Archivo > Ejecutar para ejecutar el programa en la interfaz de usuario de Quantify.
  • En un sistema UNIX, añada la palabra quantify al principio de la línea de compilación/enlace. Por ejemplo:
         % quantify cc -g hello_world.c
    
    A continuación, ejecute el programa tal como lo hace normalmente.

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