virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(1)

一、 准备工具二、操作

首先要在命令行进入虚拟机安装目录。

1. 查看安装的虚拟机

VBoxManage.exe list vms

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(2)

这个a是我上一章安装的镜像。

2. 以调试模式启动

VirtualBoxVm.exe --startvm "a" --debug-command-line # 下面两个参数不是必须的 # -E VBOX_GUI_DBG_AUTO_SHOW=true -E VBOX_GUI_DBG_ENABLED=true

系统会停止在加载状态:

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(3)

在下面的command可以输入调试指令。

三、调试控制台一些调试命令查看帮助

help --all

查看内存

d 7c00

这时内存还没有内容:

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(4)

反汇编

u FFFF0

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(5)

这是一条跳到bios区域的跳转指令。

u 7c00

我们的程序还没有加载进来。

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(6)

其它常用命令四、命令行其它命令查看报告

# 默认是生成一个压缩包 VBoxBugReport # 文本方式输出 VBoxBugReport --text # 指定虚拟机 VBoxBugReport a

五、继续前面试验

前面启动的虚拟机是暂停状态,到命令行让虚拟机继续运行:

VBoxManage.exe controlvm "a" resume

这里再看7c00区:

u 7c00

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(7)

正是前一章编写的引导程序。使用d命令看看字符串:

d 7c00

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(8)

查看寄存器,这里显示的是32位寄存器:

r

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(9)

eax,ebx,ecx等正是前面所赋的值。多试几次,可以看到eip的值保持不变,程序在这里进入了死循环,单步调试的指令在这里就没有多大的测试意义了。

virtualbox占用cpu高(使用VirtualBox调试自己的引导程序)(10)

本文参考:https://www.virtualbox.org/manual/ch12.html

,