Tecnología

Inicio

Cómo encontrar una pérdida de memoria en Linux

Cómo encontrar una pérdida de memoria en Linux


A diferencia de los lenguajes de programación más recientes, como Java y Python, los lenguajes de programación como C requieren que el programador para gestionar su propia memoria. C proporciona facilidades para solicitar memoria libre y devolverlo al sistema operativo, pero nada más. Debido a lenguajes como C no ofrecen ningún mecanismo de recolección de basura para limpiar objetos que ya no están en uso, el programador debe estar alerta y eliminar los objetos cuando ya no son necesarios. Si un programa no se deshace de sus objetos no utilizados, la pérdida de memoria resultante puede hacer que el sistema operativo se bloquee.

Instrucciones

1 Instalar el "valgrind" suite de depuración.

El paquete valgrind está disponible gratuitamente en todas las distribuciones de Linux. Para instalarlo en las distribuciones derivadas Debian como Ubuntu, escriba "sudo apt-get install valgrind." En RedHat o Fedora, escriba "sudo yum install valgrind."

2 Compilar el programa con símbolos de depuración.

El compilador más común para los programas de C en los sistemas Linux es gcc. Utilice el indicador "-g" instruir gcc para incluir los símbolos de depuración en el binario que crea. (Símbolos de depuración son necesarias para que los depuradores como valgrind para referirse a problemas específicos en su código).

Si usted tiene un programa en C llamado "memoryhog.c." por ejemplo, la compilación será el siguiente comando: gcc -g memoryhog.c

3 Ejecutar binarios de su programa a través de valgrind.

A menos que usted le indique lo contrario, gcc será el nombre de su programa "a.out". Para ejecutar el binario denominado "a.out" usando valgrind, escriba este comando: valgrind --leak-check = plena --show alcanzable = yes ./a.out

4 Inspeccionar la salida de valgrind.

Si todas las pérdidas de memoria han sido corregidos, valgrind informa "Todos los bloques fueron liberados del montón - no hay fugas son posibles."

Si las fugas de memoria están presentes, valgrind muestra el número de línea en la que se crea la fuga.

Consejos y advertencias

  • Si usted está dispuesto a instalar ganchos memoria de depuración en el código, a continuación, la utilidad mtrace puede proporcionar características similares a valgrind.
  • Las pérdidas de memoria constituyen una sola clase de error de programación. El código puede estar libre de fugas de memoria, mientras que todavía sufre de problemas de rendimiento o vulnerabilidades de seguridad.