Альтернатива valgrind (memcheck) для обнаружения утечек на linux?
У меня есть приложение linux x86, которое использует различные сторонние библиотеки общих объектов. Я подозреваю, что эти библиотеки утечки памяти (так как это не может быть мой код;)
Я попробовал надежный valgrind, но он умер ужасной смертью, потому что одна из сторонних библиотек использует неясную инструкцию x86, которая valgrind не реализует.
Я нашел рекомендацию для DUMA и попробовал (используя метод LD_PRELOAD для приведения DUMA во время выполнения), но он прервал жалобу на бесплатную работа в памяти, которая не была распределена через DUMA (почти наверняка некоторым конструктором статического объекта в одной из ранее упомянутых сторонних библиотек).
Существуют ли другие инструменты, связанные с run-time-linkable (или иначе не требующие перекомпиляции/релинка), которые будут работать в Linux?
Ответы
Ответ 1
отладчик TotalView (или, точнее, его Memscope) имеет набор функций, аналогичный набору Valgrind.
Вы также можете попробовать Электрический забор (оригинал авторская ссылка) (происхождение DUMA) для переполнения буфера или случаев без касания (но не для memleaks).
Ответ 2
Дайте Dr. Память. Он основан на DynamoRIO и разделяет многие функции с Valgrind.
Ответ 3
Heapusage - это простой инструмент времени для обнаружения утечек памяти в Linux и macOS. Формат выходного журнала для утечек очень похож на Valgrind, но он регистрирует только определенные утечки (т.е. Распределения не освобождаются при завершении).
Полное раскрытие: я написал Heapusage для использования в ситуациях, когда Valgrind неадекватен (высокопроизводительные приложения, а также для архитектур ЦП, не поддерживаемых Valgrind).