Если вам нужно проверить, нет ли в модуле ядра утечки памяти, а ваша машина имеет архитектуру x86, вы можете использовать систему KEDR , она включает в себя детектор утечки памяти.
KEDR не требует от вас перестраивать ядро.В интерактивных документах (см., Например, «Начало работы») описано, как установить и использовать KEDR.Короче говоря, процедура выглядит следующим образом.
Установка (из источника): исходный архив untar - cmake <...> - make - make install
Запустите KEDR перед загрузкой модуля:
$ kedr start <name_of_the_module_to_analyze> -f leak_check.conf
Затем вы можете загрузить свой модуль и работать с ним как обычно.После того, как вы выгрузите его, KEDR предоставит вам отчет в debugfs (обычно debugfs монтируется в /sys/kernel/debug
), например:
$ cat /sys/kernel/debug/kedr_leak_check/info
Target module: "...",
Memory allocations: 3
Possible leaks: 2
Unallocated frees: 0
Файл possible_leaks
из /sys/kernel/debug/kedr_leak_check/
предоставляет информацию (адрес,размер, стек вызовов) для каждого просочившегося блока памяти.
Наконец, вы можете остановить KEDR (обратите внимание, что /sys/kernel/debug/kedr_leak_check/
исчезнет):
kedr stop
Если вы используете систему с архитектуройкроме x86, Kmemleak также может быть полезен, хотя его немного сложнее использовать.Вам, вероятно, потребуется пересобрать ядро с параметром CONFIG_DEBUG_KMEMLEAK, установленным в 'y'.Тем не менее, Kmemleak тоже очень полезный инструмент.Подробности смотрите в Documentation / kmemleak.txt в исходных текстах ядра.