Pregunta

Esto no puede parecer como una cuestión de programación, pero sí se ocupa de código.

I tener una siguiente pieza de prueba de código, que tiene errores obvios, como índice de la matriz fuera de límites, pérdida de memoria: -

#include "stdio.h"
#include "stdlib.h"
main()
{
   int i;
   char *ptr;
   ptr = (char*)malloc(5);
   for(i=0;i<10;i++)
   {
      ptr[i]=(char)i;
   }

}

Este código se basa en un MS-Visual Studio 2008.

Estoy tratando de utilizar Rational Purify (versión 7.0) para identificar los errores de tiempo de ejecución, pérdidas de memoria en mi código. Hacia después de leer algunos consejos sobre cómo código de construcción para su uso en Purificar, he hecho cosas por debajo de la configuración del proyecto MSVS-2008: -

1.) Desactivar enlace incrementales 2.) Depurar la bandera de información compilador es / Zi

3) Establecer la opción del vinculador -.. "Comprobación en tiempo de ejecución básico con el valor por defecto

4) Se ha añadido una opción de vinculador extra / fijo:.. No

5.) Generar configuración de depuración es, sin optimización habilitada.

A continuación, voy a construir y obtener el exe. Yo uso este exe para ejecutar en Purificar por lo que los instrumentos de la misma. Pero la ventana de salida de purificar después de ejecutar / instrumentar este exe, no muestra ningún error sobre pérdida de memoria, que .etc están presentes en el código de seguridad.

La ventana de resultados muestra purificar la producción de diferentes binarios (mi archivo exe y algunas otras DLL del sistema) que instrumentado cargado, ejecutado. Sin embargo, en la salida, donde se muestra los datos de mi exe, no hay ningún mensaje de error.

Mi sensación es que estoy cometiendo un error al dar opciones de compilación / enlazador mientras que la construcción del exe en el formato ejecutable generado MS-VS 2008.or no es compatible / comprensible para Purificar?

1.) ¿Qué podría estar mal aquí? Lo más opciones i podrían necesitar mientras que la construcción del exe?

2.) ¿Es mi proceso de utilización de Purificar correcta, o me estoy perdiendo algo? ¿Cómo puedo obtener Purificar para mostrar todos los errores en mi programa después de hacer el análisis de tiempo de ejecución?

3.) ¿Hay alguna otra herramienta (no necesita licencia / comercial) que puede detecl pérdidas de memoria, serie de errores de la envolvente, el uso de punteros no inicializados, variables, etc .. corrupción de memoria al hacer el análisis de tiempo de ejecución de código C.

Lo siento por correo un poco largo, pero tuvo que ser claro.

gracias.

-AD

¿Fue útil?

Solución

Después de probar muchas cosas con furia, la lectura en Internet, descubrí Soln. para este

1) Agregar una nueva variable de entorno como:

Nombre = IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Vale = 1

2) Además de los ajustes de MS Visual Studio proyecto, que ya he mencionado en el OP, a continuación se necesita configuración -

C / C ++ -> Generación de código = biblioteca de tiempo de ejecución -> Multi-roscado de depuración / MTd

Y cuando u lance el ejecutable de purificar, usted tiene que hacer clic en Configurar selectivo, seleccione el archivo EXE.

A continuación, cuando u ejecutado, debe colelct la información relacionada con los errores requerida.

-AD

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top