Как вывести список выделенных буферов памяти в любое время, когда мое программное обеспечение было скомпилировано с AddressSanitizer? - PullRequest
0 голосов
/ 02 октября 2018

Я смотрю на проблему с одним из моих демонов, который очень жаден до памяти.Похоже, что некоторые части никогда не освобождают память, хотя когда я выполняю этот демон полностью, нет утечек.

Я бы хотел посмотреть, какие буферы добавляются и сохраняются во время работы демона.Поскольку я уже скомпилировал с параметром командной строки -fsanitizer=address, я мог бы представить, что у меня есть доступ к какой-либо функции, которая может это сделать?

Мне показалось, что я увидел "libasan", но я не смог найти ни однойдокументация об этом.Разве нет такой вещи?Если есть, где эта документация?

1 Ответ

0 голосов
/ 03 декабря 2018

Нет способа сбросить статистику выделения памяти Asan.В последних версиях Asan вы можете проверить утечки памяти, запустив export ASAN_OPTIONS=detect_leaks=1, но я не думаю, что это является причиной вашей проблемы.

Ваша проблема может быть вызвана карантином Asan - Asan не освобождает немедленнопамять на free, чтобы иметь возможность сообщать об ошибках использования после освобождения.Размер карантина по умолчанию составляет 256 МБ, вы можете управлять им с помощью export ASAN_OPTIONS=quarantine_size_mb=16.

Кстати, обратите внимание, что компиляция рабочей версии вашего ПО с -fsanitize=address не рекомендуется (Asan предназначен для обнаружения ошибок, а не предотвращения).

...