bochs调试入门
- 安装
sudo apt-get install vgabios bochs bochs-x bximage
- 创建软盘
bximage
fd
一直回车,将在当前目录下会创建一个默认大小为1.44M的软盘名为a.img。
dd if=boot of=a.img bs=512 count=1 conv=notrunc #将二进制文件写入软盘,boot为汇编生成的二进制文件
- 编写bochs配置文件 bochsrc.bxrc
megs: 32
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin
floppya: 1_44=a.img, status=inserted
boot: floppy
log: bochsout.txt
mouse: enabled=0
keyboard_mapping: enable=1, map=/usr/share/bochs/keymaps/x11-pc-us.map
- 启动调试
bochs -f bochsrc.bxrc
bochs调试基本命令:
- b addr :
在某物理地址设置断点。eg: b 0x7c00 - info break:
显示当前所以断点信息。eg: info break - c
继续执行,直到遇到断点 - s
单步执行 - n
单步执行,跳过函数 - info cpu, r, fp, sreg, creg
查看寄存器信息 - print-stack
查看堆栈 - xp /nuf addr
查看内存物理地址内容 - x /nuf addr
查看线性地址内容 - u start end
反汇编一段代码 - trace-on
反汇编执行每一条指令 - trace-reg
每执行一条指令就打印CPU信息