2

Как вы делаете дамп памяти в Bochs?

(Либо физический, либо виртуальный - но оба будут еще лучше!)

4 ответа4

2

Я знаю, что этот вопрос уже был давно, но у меня была та же проблема, и я мог ее решить.

GUI Debug

Bochs сопровождает визуальный отладчик, который можно активировать с помощью следующих флагов в

./configure \
--enable-x86-debugger \
--enable-debugger \
--enable-debugger-gui

когда вы его создадите и добавите эту опцию в свой файл конфигурации Bochs:

display_library: x, options = "gui_debug"

С открытым отладчиком графического интерфейса вы можете в любое время нажать кнопку "break" и в меню "Вид" у вас есть опции "Physical MemDump" и "Linear MemDump", просто введите начальный адрес, и bochs сбросит для вас 4 КБ.

Без отладки GUI

Если вы предпочитаете, вы также можете использовать текстовый режим, точка останова может быть установлена с помощью команды "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 для получения дополнительной информации.

0

Возможно, вы ищете Сохранить и восстановить симуляцию:

Состояние процессора (ов), памяти и всех устройств теперь можно сохранить. При запуске Bochs с кнопкой заголовка в строке заголовка появится кнопка "Suspend".

(выделение добавлено)

0

Попробуйте команды memsave и pmemsave в консоли Bochs.

' memsave addr size file '

сохранить на диск дамп виртуальной памяти, начиная с адреса размера.

' pmemsave addr size file '

сохранить на диск дамп физической памяти, начиная с адреса размера.

0

Видимо есть writemem

    writemem                     dump a number of bytes of virtual memory starting from
                                 the specified linear address into a file

Но это не похоже на работу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .