Un depurador de memoria es una herramienta para detectar problemas de memoria en el software, como fugas de memoria y desbordamientos de búfer . Estos problemas se deben a errores relacionados con la asignación y liberación de memoria dinámica . Los programas escritos en lenguajes con recolección de basura , como el código administrado , también pueden necesitar depuradores de memoria, por ejemplo, para detectar fugas de memoria causadas por referencias persistentes en las colecciones.
Descripción general
Los depuradores de memoria funcionan monitorizando el acceso, la asignación y la liberación de memoria. Muchos depuradores requieren que las aplicaciones se recompilen con bibliotecas especiales de asignación dinámica de memoria, cuyas API suelen ser compatibles con las bibliotecas convencionales, o bien utilizan el enlace dinámico. Electric Fence es un depurador que depura la asignación de memoria con malloc . Algunos depuradores de memoria (por ejemplo, Valgrind ) funcionan ejecutando el ejecutable en un entorno similar a una máquina virtual, monitorizando el acceso, la asignación y la liberación de memoria, de modo que no se requiere recompilación con bibliotecas especiales de asignación de memoria.
Detectar problemas de memoria, como fugas, puede ser extremadamente laborioso, ya que pueden no manifestarse salvo en determinadas condiciones. Utilizar una herramienta para detectar el mal uso de la memoria hace que el proceso sea mucho más rápido y sencillo. [ 1 ]
Dado que un uso anormalmente alto de la memoria puede ser un factor que contribuya al envejecimiento del software , los depuradores de memoria pueden ayudar a los programadores a evitar anomalías en el software que agotarían la memoria del sistema informático, garantizando así una alta fiabilidad del software incluso durante largos periodos de ejecución .
Comparación con un analizador estático
Algunas herramientas de análisis estático también pueden ayudar a encontrar errores de memoria. Los depuradores de memoria operan como parte de una aplicación mientras se ejecuta , mientras que el análisis de código estático se realiza analizando el código sin ejecutarlo. Estas diferentes técnicas suelen encontrar diferentes instancias de problemas, y usarlas juntas produce el mejor resultado. [ 2 ]
Lista de herramientas de depuración de memoria
Esta es una lista de herramientas útiles para la depuración de memoria. Un analizador de rendimiento puede utilizarse junto con un depurador de memoria.
Véase también
Referencias
- Michael C. Daconta: Punteros en C++ y gestión dinámica de memoria , John Wiley & Sons, ISBN 0-471-04998-0
- Andrew Koenig : Trampas y escollos , Addison-Wesley, ISBN 0-201-17928-8
- ↑ "Reseña: 5 depuradores de memoria para programación en Linux" . 20 de noviembre de 2015. Consultado el 24 de agosto de 2017 .
- ↑ "Análisis dinámico frente a análisis estático" . Consultado el 24 de agosto de 2017 .
- ↑ "Código administrado - AQtime Pro | SmartBear" . Archivado del original el 19 de septiembre de 2013. Consultado el 14 de enero de 2013 .
- 1 2 "Manual de usuario del detector invariante Daikon" .
- ↑ "Manual de usuario del detector invariante Daikon" .
Enlaces externos
- " Cazando errores de memoria " de Ivan Skytte Jørgensen
- " Comparación de verificadores de memoria gratuitos " por Jean-Philippe Martin
- Software de gestión de memoria
- Depuración