Если вы используете инструмент memcheck и хотите игнорировать ошибки Leak только в libcrypto * , вы можете поместить подавление как:
{
ignore_libcrypto_conditional_jump_errors
Memcheck:Leak
...
obj:*/libcrypto.so.*
}
... в файл и передайте его valgrind
с --suppressions=*FILENAME*
.
Чтобы игнорировать утечки ошибок в всех общих библиотеках в любом каталоге lib ( / lib , / lib64 , / usr / lib , / usr / lib64 , ...):
{
ignore_unversioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so.*
}
Это маловероятно, но вам может потребоваться добавить дополнительные варианты шаблона каталога, чтобы учесть расположение библиотек X11 и GTK.
Помните, что при этом будут игнорироваться ошибки, вызванные написанными вами обратными вызовами, которые были вызваны библиотеками . Перехват ошибок в этих обратных вызовах можно почти сделать с помощью:
{
ignore_unversioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so.*
...
obj:*/lib*/lib*.so.*
}
... но это выявляет ошибки при вызовах библиотекой, использующей malloc Valgrind. Поскольку valgrind malloc внедряется непосредственно в текст программы - не загружается как динамическая библиотека - он появляется в стеке так же, как и ваш собственный код. Это позволяет Valgrind отслеживать распределение, но также затрудняет выполнение именно того, что вы просили.
К вашему сведению: я использую valgrind 3.5.