2012-02-07 18 views
7

Normalmente escribo mis clases en C++ y compruebo si pierden memoria utilizando valgrind en la plataforma Linux. No estoy satisfecho hasta que se libere toda la memoria del montón.Archivos de supresión de fugas de memoria Qt con Valgrind

Comenzando a escribir en Qt, encontré cuántas fugas detecta Valgrind, también en un proyecto simple. Son tantos que es difícil detectar mis mismas filtraciones.

He leído en algún lugar que es posible usar un archivo de supresión para valgrind que ayuda a filtrar las fugas no deseadas, pero no puedo encontrarlo.

Estoy usando Ubuntu 11.04 x64, g ++ 4.5, Qt 4.7. ¿Alguien sabe cómo hacer frente a este problema?

Respuesta

6

¿Miraste this "Valgrind Suppression File Howto" wiki?

Solo para el registro hay algunas bibliotecas subyacentes en Qt (especialmente las que están en el proceso de pintura) que siempre pierden una pequeña cantidad de memoria. Estos son los que necesita suprimir.

Como dijo, primero debe crear un proyecto mínimo, ejecutarlo para crear un archivo de supresión de validación y luego aplicar ese archivo de supresión a su proyecto.

+0

Gracias. Entonces, primero debo crear un proyecto mínimo, ejecutarlo para crear un archivo de supresión de valgrind y luego aplicar ese archivo de supresión a mi proyecto, ¿verdad? – linello

+1

sí, eso es todo. – UmNyobe

0

Solo tenga en cuenta que muchas bibliotecas tienen estructuras internas de asignación que nunca alcanzará para limpiar, y es normal.

+0

algunas de las muchas fugas no tienen símbolos en absoluto! – linello

-1

acabo utilizando archivo de supresión para suprimir toda la memoria informado de la biblioteca Qt como esto:

{ 
     <QtCore> 
     Memcheck:Leak 
     ... 
     obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6 
    } 

... 
+0

Esa es una mala idea. He encontrado errores en mi propio código, donde la nueva llamada real es de uno de los contenedores Qt (QHash), por lo que si suprime todas las bibliotecas Qt se perderá eso. –