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