您好,欢迎来到码863代码分享网! 请[登录] / [注册]

bochs模拟器:调试命令详解

编辑

linux 编译安装 https://blog.csdn.net/qq_36393978/article/details/126260487


一键安装 sudo apt-get install bochs bochs-x


执行控制

命令命令含义举例
c继续执行,命令也可以写成cont或continue
s [count]执行指定数量的指令,count为数量,默认值是1,命令也可以写成steps 2
s [cpu] [count]对于多CPU模拟器,在指定的CPU上执行指定数量的指令,命令也可以写成steps 1 5
s all [count]对于多CPU模拟器,在所有CPU上执行指定数量的指令,也可以写成step alls all 5
Ctrl-C 或 Ctrl-D对于正在执行的程序,是停止程序执行回到命令行;对于命令行,则是退出模拟器
q 或 quit 或 exit在命令行中输入该命令,停止程序执行,退出模拟器

断点设置

断点设置涉及到段9seg)、偏移(off)、地址(addr)等概念,有如下三种形式:

十六进制:以0x开头

十进制:0~9的数字组成,开头数字非0

八进制:0~7的数字组成,且以0开头

命令命令含义举例
vb seg:off也可以写成vbreak seg:off,表示针对虚拟地址段:偏移=seg:off设置断点vb 0x0000:0x7c00
vb seg:off if "expr"也可以写成vbreak seg:off if "expr",表示针对虚拟地址段:偏移=seg:off设置条件断点,条件为"expr"
lb addr也可以写成lbreak addr,表示针对线性地址addr设置断点lb 0x7c00
lb addr if "expr"也可以写成lbreak addr if "expr",表示针对线性地址addr设置条件断点
b addr也可以写成break addr、pbreak addr、pb addr等形式,针对物理地址addr设置断点
info break显示当前所有断点的状态
bpe n使能断点n
bpd n禁止断点n
d n也可以写成delete n、del n,删除断点n

内存观测

命令命令含义举例
watch r addr也可以写成watch reda addr,表示在物理地址addr处插入一个读观测点,当该内存被读取的时候触发该观测点watch r 0x7c1b
watch w addr也可以写成watch write addr,表示在物理地址addr处插入一个写观测点,当该内存被写入的时候触发该观测点
watch显示当前所有内存观测点的状态
watch stop观测点被触发后的行为:当触发观测点后,暂停模拟器运行,回到命令行等待输入(这也是watch观测点的默认行为)
watch continue观测点被触发后的行为:当触发观测点后,继续执行
unwatch addr移除指定物理地址的观测点
unwatch移除所有的观测点
trace-mem on/off使能/禁止内存访问跟踪

内存操作

命令命令含义举例
x /nuf addr按照指定的格式打印线性地址addr中的内容。n、u、f是三个格式选项。
n:指定待显示内存的单元数量,单元的大小由u指定
u:指定单元的大小,b表示字节、h表示字(2字节)、w表示双字(4字节)、g(8字节)
f:指定打印格式,x表示以16进制打印、d表示以十进制打印、u表示以无符号十进制打印、o表示以八进制打印、t表示以二进制打印
x /16bx 0x7c00
表示打印0x7c00地址开始处的16字节内容
以16进制的方式打印
按照每个字节为一个显示单元,显示单元之间空格
xp /nuf addr与x /nuf addr的区别在于,xp命令打印的是指定的物理地址addr中的内容。
setpmem addr datasize val将物理地址addr处开始的datasize字节设置为val值setpmem 0x7c1b 2 0x4141
writemem filename addr len从指定的线性地址开始,复制指定数量的内存字节数到文件writemem file.dat 0x7c1b 16
crc addr1 addr2计算物理地址addr1-addr2之间的crc32值

信息查询

命令命令含义举例
r列出CPU中的整数寄存器及其内容,该命令也可以写成reg、regs、registersr
fp列出所有FPU寄存器及其内容,该命令也可以写成fpu
mmx列出所有MMX寄存器及其内容
sse列出所有SSE寄存器及其内容,该命令也可以写成xmm
ymm列出所有AVX寄存器及其内容
sreg列出段寄存器及其内容sreg
dreg列出调试寄存器及其内容
creg列出控制寄存器及其内容
info cpu列出所有CPU的寄存器及其内容
info flags呈现EFLAGS寄存器的内容
info break列出所有断点状态信息
info tab列出页表地址转换表
info device列出指定设备device的状态

操作CPU寄存器

命令命令含义举例
set reg = expr将指定的CPU寄存器reg变更为表达式的值,当前只支持通用寄存器和指令寄存器。set eax = 2 + 2*2<br />set esi = 2 * eax + ebx

其他命令

命令命令含义举例
ptime打印当前时间(模拟器自从启动后的tick数)




CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网 湘ICP备2023018646号-1
MYSQl共执行 3 个查询,用时 0.098989009857178 秒,PHP脚本用时 0.101572 秒,占用内存 0.520 MB,Gzip 已启用