bochs虚拟机调试命令大全

bochs虚拟机调试介绍

方法一:在你的程序 LABEL_BEGIN后面紧接着写一个jmp $(让代码死循环在这个位置),然后编译为com文件。写入虚拟软盘。
之后启动调试模式的bochs,先不要设置任何断点,直接执行到dos界面。然后在dos中运行你的程序,出现假死状态(必然的,程序一开始就会死循环)。
然后切换到bochs的命令行窗口,估计需要先按ctrl+c,然后输入r命令,察看当前eip寄存器的值。例如当前值为0x124,那么就输入下面的命令,set $eip=0x126,就是让EIP增大2即可,JMP $的机器码要占这么个大小。之后,就可以单步跟踪执行了

方法二(本方法适用于非com文件):先在bochs的配置文件中加入一句话”magic_break: enabled=1”,这句话的作用就是bochs启动时开启魔术断点调试功能,然后在程序开始处添加一句xchg bx,bx(在操作系统开发中非常便捷)。
当bochs执行到xchg bx,bx指令时就程序会自动暂停,类似于添加了一个断点。

bochs调试命令集合
b addr 在物理地址处设置断点 addr为物理内存地址,不加段基址
lb 在线性地址处设置断点 addr为线性物理地址,不加基址
vb 在虚拟地址上设置断点 addr为段基址:偏移地址, cs段
c 继续执行知道遇到断点
n 单步执行 跳过子程序和int中断程序
s 单步执行
s num ( s指令后加一数字) 执行n步
dump_cpu 查看寄存器信息 (实测下来这个指令好像不好使。。。)
x /nuf addr 显示指定内存地址的数据,addr可以是线性的内存地址,也可以是虚址 格式是基址:偏移或者基址寄存器:偏移
n 显示的数据长度
u 数据单元大小 b,h,w,g分别对应1,2,4,8字节
f 数据显示格式 x,d,u,o,t,c分别对应十六进制、十进制、无符号十进制、八进制、二进制、字符串
u [/count] start end 反汇编一段线性内存(作用与上面的一样)
(count 参数指明要反汇编的指令条数 ,例子:u /5 --反汇编从当前地址开始的5条指令)
info指令组
info b 展示当前的断点状态信息
info dirty 展示自从上次显示以来物理内存中的脏页(被写的页)
info program 展示程序的执行状态 (无法使用!)
info r|reg|rigisters 展示寄存器内容
info cpu 展示CPU寄存器内容
info fpu 展示FPU寄存器的状态
info idt 展示中断描述表
info ivt 展示中断向量表(保护模式下无效)
info gdt 展示全局描述表
info tss 展示当前的任务状态段
info cr 展示CR0-CR4寄存器状态 (无法使用)
info flags 展示标志寄存器 (无法使用)
寄存器查询
r 查看通用寄存器
sreg 查看段寄存器(es,cs,gs,ss,fs,ds以及idt,gdt,ldt,tr)
creg 查看控制寄存器(cr0,cr1,cr2,cr3)

dreg 查看调试寄存器(dr0-dr7)
fp 查看
x /nuf [addr] 显示线性地址(Linear Address)的内容 x /40bx 0x7c00
xp /nuf [addr] 显示物理地址(Physical Address)的内容
参数 n 显示的单元数
参数 u 每个显示单元的大小,u可以是下列之一:
b BYTE
h WORD
w DWORD
g DWORD64

注意: 这种命名法是按照GDB习惯的,而并不是按照intel的规范。
f 显示格式,f可以是下列之一:
x 按照十六进制显示
d 十进制显示
u 按照无符号十进制显示
o 按照八进制显示
t 按照二进制显示
c 按照字符显示

n、f、u是可选参数,如果不指定,则u默认是w,f 默认是x。如果前面使用过x或 者xp命令,会按照上一次的x或者xp命令所使用的值。n默认为1。addr 也是一个可选参数,如果不指定,addr是0,如过前面使用过x或者xp命令,指定了n=i,则再次执行时n默认为i+1。
print-stack 查看栈信息
trace-reg on 后, 再执行单步调试的时候都会显示寄存器的当前状态了
trace on|trace off Tracing开关打开后,每执行一条指令都会将反汇编的结果显示出来。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本次实验的目的是通过搭建基于bochslinux虚拟机,掌握虚拟化技术的基本原理和实现方法,同时深入了解操作系统内核的工作原理和机制。本文将从实验的背景、实验过程、实验结果、实验总结、实验分析等方面进行介绍。 一、实验背景 随着计算机技术的不断发展和进步,虚拟化技术作为一种高效、灵活、可靠的计算机资源管理方式,越来越受到人们的关注和重视。而bochs作为一种开源的x86模拟器,可以模拟出完整的计算机硬件环境,是进行操作系统内核开发、测试和调试的重要工具之一。因此,本次实验选择使用bochs来搭建一个基于linux虚拟机,以掌握虚拟化技术的基本原理和实现方法。 二、实验过程 1. 安装bochs 首先,在ubuntu系统中通过apt-get命令安装bochs: sudo apt-get install bochs 2. 下载linux镜像文件 在官网上下载一个适合bochslinux镜像文件,然后将其解压缩即可。 3. 编写bochsrc配置文件 在bochs的安装目录下,创建一个名为bochsrc的文本文件,然后写入以下内容: ``` megs: 32 display_library: sdl romimage: file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest ata0-master: type=disk, path="linux.img", mode=flat, cylinders=1024, heads=16, spt=63 boot: disk log: bochsout.txt mouse: enabled=0 ``` 其中,megs表示虚拟机的内存大小为32MB,display_library设置为sdl,romimage和vgaromimage分别指定BIOS和VGA BIOS的镜像文件。ata0-master指定虚拟机的硬盘文件路径、模式、磁头数、柱面数等信息。boot设置为disk,表示从硬盘启动。log指定日志文件的名称。mouse表示不启用鼠标。 4. 启动虚拟机bochs的安装目录下,执行以下命令启动虚拟机bochs -f bochsrc 5. 进入linux系统 在启动虚拟机后,按照提示进入linux系统。 三、实验结果 通过以上步骤,我们成功地搭建了一个基于bochslinux虚拟机,并成功进入了linux系统。 四、实验总结 通过本次实验,我们深入了解了虚拟化技术的基本原理和实现方法,掌握了bochs的基本使用方法,同时也进一步了解了操作系统内核的工作原理和机制。同时,通过实验,我们还学习到了如何编写bochsrc配置文件、如何选择linux镜像文件以及如何启动虚拟机等操作。 五、实验分析 虚拟化技术在计算机领域中有着广泛的应用,例如云计算、虚拟化服务器、虚拟化存储等。通过本次实验,我们不仅掌握了虚拟化技术的基本原理和实现方法,还深入了解了操作系统内核的工作原理和机制。因此,虚拟化技术和操作系统内核是计算机领域中非常重要的知识点,值得我们深入学习和研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值