Как вы делаете дамп памяти в Bochs?
(Либо физический, либо виртуальный - но оба будут еще лучше!)
Я знаю, что этот вопрос уже был давно, но у меня была та же проблема, и я мог ее решить.
Bochs сопровождает визуальный отладчик, который можно активировать с помощью следующих флагов в
./configure \
--enable-x86-debugger \
--enable-debugger \
--enable-debugger-gui
когда вы его создадите и добавите эту опцию в свой файл конфигурации Bochs:
display_library: x, options = "gui_debug"
С открытым отладчиком графического интерфейса вы можете в любое время нажать кнопку "break" и в меню "Вид" у вас есть опции "Physical MemDump" и "Linear MemDump", просто введите начальный адрес, и bochs сбросит для вас 4 КБ.
Если вы предпочитаете, вы также можете использовать текстовый режим, точка останова может быть установлена с помощью команды "lbreak addr" (для линейного) или "pbreak addr" (физический), для вывода списка настроенных точек останова просто введите "info break" и удалите их "d номер". Один шаг (ы) и продолжить выполнение (продолжить).
Когда выполнение приостановлено, вы можете выполнить дамп с помощью "x" (линейный) и "xp" (физический), за которыми следуют некоторые необязательные параметры, такие как, например, формат вывода, количество байтов и адрес.
Пример:
x /30bx 0xC0000000
создаст дамп в 30 байт в шестнадцатеричном формате с линейного адреса 0xC0000000.
В некоторых случаях дамп может быть достаточно большим, чтобы его можно было прочитать на экране. В этих случаях вы можете сделать это с файлом, используя команду "writemem".
Его синтаксис:
writemem "filename" linearAddress lenght_in_bytes
так что если вам нужно выгрузить первые 1024 байта линейного адреса 0xdeadbeef в файл "dump", что-то вроде:
writemem "dump" 0xdeadbeef 1024
должно сработать.
Пожалуйста, обратитесь к http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html для получения дополнительной информации.
Возможно, вы ищете Сохранить и восстановить симуляцию:
Состояние процессора (ов), памяти и всех устройств теперь можно сохранить. При запуске Bochs с кнопкой заголовка в строке заголовка появится кнопка "Suspend".
(выделение добавлено)
Попробуйте команды memsave
и pmemsave
в консоли Bochs.
'
memsave addr size file
'сохранить на диск дамп виртуальной памяти, начиная с адреса размера.
'
pmemsave addr size file
'сохранить на диск дамп физической памяти, начиная с адреса размера.
Видимо есть writemem
writemem dump a number of bytes of virtual memory starting from
the specified linear address into a file
Но это не похоже на работу.