如何在 Bochs 中进行内存转储?

如何在 Bochs 中进行内存转储?

如何进行内存转储波克斯

(无论是物理的还是虚拟的——但两个都会更好!)

答案1

我知道这个问题已经存在一段时间了,但我遇到了同样的问题并且可以解决。

图形用户界面调试

Bochs 附带一个可视化调试器,可以使用以下标志激活它

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

当您构建它时,请在您的 Bochs 配置文件中添加此选项:

display_library: x, options = "gui_debug"

打开 GUI 调试器后,您可以随时按“break”按钮,在 View 菜单中,您有“Physical MemDump”和“Linear MemDump”选项,只需输入起始地址,bochs 就会为您转储 4kB。

无 GUI 调试

如果您愿意,您也可以使用文本模式,可以使用命令“lbreak addr”(线性)或“pbreak addr”(物理)设置断点,要列出配置的断点,只需输入“info break”,要删除它们,只需输入“d number”。单步(s)并继续执行(continue)。

在执行暂停的情况下,您可以使用“x”(线性)和“xp”(物理)进行转储,后跟一些可选参数,例如输出格式、字节数和地址。

例子:

x /30bx 0xC0000000

将从线性地址 0xC0000000 开始以十六进制格式转储 30 个字节。

在文件中写入

在某些情况下,转储可能足够大,可以在屏幕上读取。在这些情况下,您可以使用命令“writemem”将其写入文件。

它的语法是:

writemem "filename" linearAddress lenght_in_bytes

因此如果您需要将线性地址 0xdeadbeef 的前 1024 个字节转储到“转储”文件中,则类似于:

writemem "dump" 0xdeadbeef 1024

应该管用。

请参阅http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html了解更多信息。

答案2

也许你正在寻找保存和恢复模拟

CPU 的状态,记忆现在所有设备都可以保存了。运行 Bochs 时,标题栏中会出现一个名为“暂停”的按钮。

(强调添加)

答案3

在 Bochs 控制台中尝试memsave命令。pmemsave

' memsave addr size file'

保存从大小为 size 的 addr 开始的磁盘虚拟内存转储。

' pmemsave addr size file'

保存从大小为 size 的 addr 开始的物理内存转储到磁盘。

答案4

显然有writemem

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

但它似乎不起作用。

相关内容