2011-09-14 15 views
17

Tengo una aplicación linux x86 que hace uso de varias bibliotecas de objetos compartidos de terceros. Sospecho que estas bibliotecas son fugas de memoria (puesto que no puede posiblemente ser mi código ;-)¿Alternativa a valgrind (memcheck) para encontrar fugas en Linux?

Probé la valgrind de confianza, pero murió una muerte horrible porque one of the third-party libraries is using an obscure x86 instruction que valgrind doesn't implement.

He encontrado a recommendation for DUMA y lo he probado (usando la técnica LD_PRELOAD para traer DUMA en tiempo de ejecución), pero ha abortado quejándose de una operación libre en la memoria que no fue asignada a través de DUMA (casi seguro por algún constructor de un objeto estático en una de las bibliotecas de terceros mencionadas anteriormente).

¿Hay otras herramientas en tiempo de ejecución (o que no requieran una recompilación/relink) que funcionen en Linux?

Respuesta

5

El TotalView debugger (o, más precisamente, su Memscope) tiene un conjunto de características similar al de Valgrind.

También puede intentar Electric Fence (original author's link) (el origen de la DUMA) de desbordamiento de buffer u casos toque después de liberación (pero no para memleaks, sin embargo).

5

Give Dr. Memory un intento. Se basa en DynamoRIO y comparte muchas de las funciones con Valgrind.

+3

Solo quería agregar que solo es de 32 bits. –

+0

@SantoshTiwari: No lo creo. Creo que lo que quiere decir es que los paquetes binarios para su plataforma solo pueden estar disponibles para una plataforma en particular. DynamoRIO es flexible y también funciona en (algunas) plataformas de 64 bits. – 0xC0000022L

+1

~~ Dr.M ~~ Esta versión de Dr. Memory no admite aplicaciones de 64 bits. –

0

Heapusage es una herramienta simple en tiempo de ejecución para encontrar pérdidas de memoria en Linux y macOS. El formato de registro de salida para fugas es bastante similar a Valgrind, pero solo registra fugas definidas (es decir, asignaciones no liberadas al finalizar).

Descripción completa: escribí Heapusage para su uso en situaciones en las que Valgrind es inadecuado (aplicaciones de alto rendimiento, y también para arquitecturas de CPU no compatibles con Valgrind).

Cuestiones relacionadas