1,如何运行bochs调试程序
假设bachs系统安装在目录“C:\Program Files\Bochs=2.1.1\"中,并且linux系统的Bochs的配置文件名称为:bochsrc-hd.bxrc。现在我们在Image文件的目录下建立一个简单的批处理程序:
“C:\Program Files\Bochs-2.1.1\bochsdbg" -g -f bochsrc-hd.bxrc”
运行该批处理命令集可进入调试环境,此时bachs主窗口空白,但是调试窗口将显示系统信息
========================================================================================
Bochs x86 Emulator 2.1.1 February 08,2004
========================================================================================
00000000000i[ ] reading configuration from bochsrc-hd.bxrc
00000000000i[ ] installing win32 module as the bochs GUI
00000000000i[ ] Warning : no rc file specified
00000000000i[ ] using log file bochsout.txt
Next at t=0
(0)context not implemented because BX_HAVE_HASH_MAP=0
[0x000ffff0] f000:fff0(unk . ctxt): jmp f000:e05b ;ea5be000f0
<bochs:1>:
-------------------------------------------------------------------------------------------------------------------------------
此时,bochs系统已经准备好开始运行,CPU执行指针指向ROM BIOS中地址0x000ffff0处的指令。
可以在命令提示符后,输入help用以列出调试系统的基本命令
完整的调试指令帮助文档在internal-debugger.html中
2,执行控制命令,控制程序的单步或多步执行
————————————————————————————————————————————
c 连续执行
stepi[count] 执行count条指令,默认为一条,可略写为:si[count] ; step[count]
Ctrl-C 停止执行,并回到命令提示符下
Ctrl-D 如果在空的命令提示符下键入该命令,则退出bochs
quit 退出调试和执行 可略写为:q
————————————————————————————————————————————
3,断点设置命令。其中seg, off, addr可以是"oX"开头的十六进制数,也可以是十进制数,或者以"0"开头的八进制数
————————————————————————————————————————————
vbreak seg:off 在虚拟地址上设置断点,简写成vb seg:off
lbreak addr 在线性地址上设置断点,简写成lb addr
pbreak [ * ] addr 在物理地址上设置断点,简写成pb [*] addr
info break 显示所有断点当前信息
delete n 删除一个断点
————————————————————————————————————————————
4,内存操作命令
————————————————————————————————————————————
x /nuf addr 检查位于线性地址addr处的内存内容,若addr不指定,为下单元
xp /nuf addr 检查位于物理地址addr处的内存内容
————————————————————————————————————————————
5,信息显示和cpu寄存器操作命令
————————————————————————————————————————————
info program 显示程序的执行状态
info registers 列表显示cpu整数寄存器及其内容
info break 先是当前断点设置情况
dump_cpu 显示cpu全部状态信息
————————————————————————————————————————————
应用举例:
比如,在引导linux系统下,要让bochs直接模拟执行到linu的引导启动程序开始处,我们可以先试用断点命令在ox7c00处设置一个断点,然后让系统运行到哪里停下来:
————————————————————————————————————————————
<bochs-3> vbreak 0x0000:0x7c00
<bochs-4>c
(0) breakpoint 1, 0x7c00(0x0:0x7c00)
next at t=4409138
————————————————————————————————————————————
set_cpu 设置cpu全部状态信息 |