Или предпочтительно все они вместо просто моего кода? Моя программа использует Gtk, Крикуна и немного других вещей, и эти два (и некоторые позади них, libgcrypto, libssl) вызывают самих столько ошибок, что я не могу обнаружить свое собственное. Действительно ли возможно заставить valgrind проигнорировать вещи, прибывающие из глубже, чем мой собственный код?
Вы можете сгенерировать подавление ошибок для библиотек, но я не думаю, что вы можете вообще исключить библиотеки.
Также трудно автоматически определить, вызвана ли ошибка памяти в библиотеке проблемой в вашем коде или нет.
В частности, с OpenSSL это очень сложно. Ключи шифрования SSL частично основаны на неинициализированном мусоре стека, что означает, что все расшифрованные данные тоже заражены. Это заражение имеет тенденцию распространяться за пределы самого OpenSSL.
Здесь может помочь компиляция OpenSSL с опцией «PURIFY». К сожалению, из-за некоторых плохо продуманных действий основного дистрибутива Linux это вряд ли станет дефолтом.
Очень простой обходной путь - опция memcheck - undef-value-errors = no
.