2 abr 2009

Detección de Lagunas de memoria en C y C++

Para comprobar las lagunas de memoria existen varias posibilidades, pero me centrare en dos, Valgrind y dmalloc.

La primera de ellas basta instalarla, y también podemos instalar un frontend llamado alleyoop.
Valgrind tiene varias opciones y permite hacer mas cosas además de comprobar la memoria, pero para nuestro fin la usaremos con:

valgrind --tool=memcheck --leak-check=yes nombre_programa

Es posible indicar que nos genere un archivo de log.
Para usar el alleyoop, debemos usarlo con:

alleyoop /ruta/al/nombre_programa

Evidentemente la ejecución del programa será mas lenta usando valgrind que normalmente.


La otra utilidad es dmalloc, que necesita incluir el archivo de cabecera dmalloc.h en el programa, y además compilarlo con la biblioteca dmalloc añadiendo -ldmalloc a la orden de compilación.
Después hay que configurar una variable de entorno y exportarla. Un ejemplo sería:

DMALLOC_OPTIONS=debug=0x44a40503,inter=1,log=logfile
export DMALLOC_OPTIONS
El valor hexadecimal de debug marca que tipo de comprobaciones se llevan a cabo. Para simplificar esta configuración existe un programa llamado dmalloc que podemos ejecutar en la consola, y que nos permite obtener el valor que debemos poner en la variable de entorno, según una serie de tokens correspondientes a las diferentes comprobaciones.

No hay comentarios: