Из ядра GDB, найти самый большой доступный блок памяти

У меня есть ядро ​​процесса из системы, которая убивает процесс, если он выделяет память выше установленного предела. Кажется, процесс потерпел крах, потому что память фрагментирована. Для подтверждения хочу узнать самый большой доступный свободный блок памяти. Есть ли способ, которым я могу найти это из ядра.

1 ответ

Предположим, что вы используете Linux glibc, плагины gdb, такие как libheap, gef, pwndbg, предоставляют функции проверки свободных фрагментов.

Также, если вы можете заставить OOM повториться, вы можете попробовать некоторый распределитель памяти, который имеет функцию, чтобы довольно красиво распечатать макет арены malloc перед тем, как она выйдет из строя (включая jemalloc, см. Пример использования: Основная статистика распределителя)

Valgrind может помочь в случае утечки памяти, но я не уверен, что это полезно для фрагментации памяти.

Другие вопросы по тегам