我只是交叉发布了我在 virtualbox.org 上提出的相同问题。 http://forums.virtualbox.org/viewtopic.php?f=9&t=26702&p=119139#p119139
如果不违反任何规则,我很乐意了解更多相关信息,因为 stackoverflow 承诺会更加动态!
“嗨, 我做了一些搜索,但找不到任何工具可以从虚拟盒中的早期启动中调试来宾系统。尽管如此,我遇到了 JCP,一个 java 中的 x86 模拟器,它不是那么强大和漂亮,但有一个调试模式,可以在其中查看物理内存、CPU 寄存器以及其他东西。它还可以逐步执行CPU指令并设置断点、观察点和条件点。 Virtual Box里有这种东西吗?
我认为拥有它并能够在系统运行时检查系统会很棒。用于了解 PC 架构或作为开发内核的工具。
如果你认为这是个好主意(我认为是),它如何实现?我对开发此类东西很感兴趣,并且想知道如果尚未在某处实施的话是否可行。”
EDT:现代 x86 是否能够在一个 cpu 周期后中断其执行,并将执行地址传递给另一个代码来执行此操作?是的,可以设置陷阱标志以使处理器进入逐步执行模式。 x86 将执行一条指令并调用 INT 3。
OSDev wiki 有一些关于调试来宾操作系统的有用信息,尽管根据 this page VirtualBox 目前没有调试器。我一直在使用 QEmu 和 GDB 存根,它工作得很好,所以你可能想尝试一下。
VirtualBox 调试器 VirtualBox 包含一个可以使用命令行工具启用的集成调试器。启动调试器:
使用 --startvm 和 --dbg 标志从命令行启动 VirtualBox。 使用帮助或信息寄存器等命令来检查虚拟机的状态。 VirtualBox 日志文件 VirtualBox 为每个虚拟机创建详细的日志文件。您可以在 Logs/VBox.log 下的 VM 文件夹中找到这些日志。分析这些文件是否有错误或警告。
GDB(GNU 调试器)集成 您可以将 GDB 连接到 VirtualBox 进程来调试更复杂的问题。通过 VBoxManage debugvm 等命令使用 VirtualBox 的远程调试功能。
用于调试的串行端口
在虚拟机设置中启用虚拟串行端口并将其配置为输出到文件或管道。 使用它进行内核调试或捕获来自来宾操作系统的错误输出。 来宾操作系统工具
在虚拟机中安装 Guest Additions。它提供了增强的调试选项和更好的集成来诊断问题。 使用特定于操作系统的内置调试工具,例如 Linux 上的 dmesg 或 Windows 上的事件查看器。 第三方调试工具
用于网络级调试的 Wireshark 等工具。 用于分析虚拟磁盘损坏的磁盘实用程序。