У меня есть дамп ядра с полным куче от мертвого процесса на машине x86 Linux (ядро 2.6.35-22, если это имеет значение), который я пытаюсь отладить в GDB.
Есть ли команда GDB, которую я могу использовать, это означает: "Покажите мне список всех областей адресов памяти, выделенных этим процессом?" Другими словами, могу ли я выяснить, какие все возможные допустимые адреса памяти я могу проверить на этом дампе?
Причина, по которой я спрашиваю, заключается в том, что мне нужно искать всю кучу процесса для определенной двоичной строки, а для использования команды find
мне нужен начальный и конечный адрес. Просто поиск от 0x00 до 0xff.. не работает, потому что find
останавливается, как только он встречает адрес, к которому он не может получить доступ:
(gdb) find/w 0x10000000, 0xff000000, 0x12345678
предупреждение: невозможно получить доступ к целевой памяти на 0x105ef883, остановив поиск.
Поэтому мне нужно получить список всех областей читаемого адреса в памяти, чтобы я мог их искать по одному.
(Причина, по которой мне нужно это сделать: мне нужно найти все структуры в памяти, которые указывают на определенный адрес.)
Ни один из show mem
, show proc
, info mem
, info proc
, похоже, делает то, что мне нужно.