Я получил дамп ядра полной кучи из мертвого процесса на компьютере с Linux x86 (ядро 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
, кажется, не делает то, что мне нужно.