Parece ser que es necesario incluir un registro de supresión separada para cada tipo de error (Cond , Value4, Param, etc.). Pero basado en mis pruebas con valgrind-3.6.0.SVN en Debian, creo que se puede utilizar el siguiente formulario simplificado para cada tipo de error ...
{
<insert_a_suppression_name_here>
Memcheck:Cond
...
obj:/path/to/library/thelibrary.so.*
...
}
{
<insert_a_suppression_name_here>
Memcheck:Leak
...
obj:/path/to/library/thelibrary.so.*
...
}
Los tres puntos son llamados comodines a nivel de trama en los documentos de Valgrind. Estos coinciden con cero o más cuadros en la pila de llamadas. En otras palabras, los usa cuando no importa quién llamó a la biblioteca, o qué funciones la biblioteca posteriormente llama al.
A veces los errores incluyen marcos "obj:" y, a veces solo utilizan marcos "divertidos". Esto se basa, en general, en si esa función se incluye o no en la tabla de símbolos de la biblioteca. Si el objetivo es excluir toda la biblioteca, puede funcionar mejor si la biblioteca no incluye los símbolos para que pueda excluir en función del nombre de archivo de la biblioteca en lugar de tener que crear supresiones separadas para cada llamada de función dentro de la biblioteca. Con suerte, Valgrind es lo suficientemente inteligente como para suprimir los errores basados en el nombre de archivo de la biblioteca, incluso cuando sabe el nombre de la función, pero no he verificado esto.
Si necesita añadir supresiones en base a las funciones individuales dentro de la biblioteca, usted debería ser capaz de usar la misma forma ...
{
<insert_a_suppression_name_here>
Memcheck:Leak
...
fun:the_name_of_the_function
...
}
Nota: Puede incluir --gen-suppressions=all
en la línea de comandos valgrind con el fin de ver la forma exacta y los nombres (incluyendo cualquier formateo de C++) necesarios para suprimir cada error.Puede usar esa salida como plantilla para sus registros de supresión, en los que normalmente desea reemplazar la mayoría de las líneas con ...
para simplificar el proceso de supresión de todos los errores que puedan ocurrir en asociación con una biblioteca o llamada de función específica.
Nota: <insert_a_suppression_name_here>
es un marcador de posición en el que puede escribir el texto descriptivo que desee. Se requiere que no esté en blanco.
Puede que desee preguntar esto en el correo valgrind l ist también. –