Bochs2.6.11常用命令

2020-11-02 08:55:00
赵勤松
原创
3076
摘要:整理并收录了Bochs Debug的常用命令。

一、系统命令

命令 参数 说明
h|help 显示完整的帮助信息

<命令> 显示具体命令的详细帮助
q|quit|exit 退出模拟器的调试过程
set <寄存器> = <值> 设置寄存器的值

eflags = <表达式> 设置eflags的值(并非所有标志都可以修改)

$cpu = <N> 在SMP模式中将调试器控制移动到指定的CPU

$auto_disassemble = 0|1 设置调试器在每次执行停止时反汇编当前指令

u|disasm|disassemble on 等同于"set $auto_disassemble = 1"

u|disasm|disassemble off 等同于"set $auto_disassemble = 0"
instrument <命令> 使用命令调用BX_INSTR_DEBUG_CMD
show 显示当前的show模式

mode
当处理器切换模式时显示信息(开启或关闭)

int 当发生中断时显示信息(开启或关闭)

softint
当发生软中断时显示信息(开启或关闭)

extint 当发生外部中断时显示信息(开启或关闭)

call 当发生call时显示信息(开启或关闭)

iret 当发生iret时显示信息(开启或关闭)

all 打开所有可切换的显示

off 关闭所有可切换的显示

dbg_all
打开所有bx_dbg标志

dbg_none 关闭所有bx_dbg标志
trace on 打开指令跟踪(执行每条指令时显示指令的反汇编代码)

off 禁用指令跟踪
trace-reg on 打开寄存器状态跟踪(执行每条指令之前打印所有的寄存器内容)

off 关闭寄存器状态跟踪
trace-mem on 打开内存访问跟踪(打印指令执行期间发生的所有内存访问)

off 关闭内存访问跟踪
u|disasm 显示当前地址开始的一条指令

起始地址
显示指定地址开始的一条指令

/数量 显示当前地址开始的多条指令

/数量 起始地址 显示指定地址开始的多条指令

起始地址 终止地址 显示从指定地址到终止地址的所有指令

switch-mode
切换反汇编指令的语法形式(Intel与AT&T)

hex on/off
控制偏移和位移格式

size = n 段大小(16|32|64)
ldsym [全局] <文件名> 偏移值
从文件中加载符号定义
slist 显示所有的符号定义

[字符串] 显示指定字符串开头的符号定义

二、运行命令

命令 参数 说明
c|cont|continue 继续执行直到断点

if "表达式" 继续执行直到表达式成立
s|step 单步执行

数量
执行指定数量的指令

[cpu] 数量 在执行的cpu上执行一定数量的指令

all 数量 在所有的cpu上执行一定数量的指令
p|n|next
单步执行,跳过子程序和中断程序
modebp
切换"模式更改"中断的状态(开启后,实模式与保护模式之间切换时触发)
vmexitbp 切换"虚拟机退出"中断的状态(开启后,虚拟机退出时触发)

三、断点设置

命令 参数 说明
vb|vbreak addr 设置一个虚拟地址类型中断

addr if "expression" 设置一个条件触发的虚拟地址类型中断
lb|lbreak addr 设置一个线性地址类型中断

addr if "expression" 设置一个条件触发的线性地址类型中断
pb|pbreak|b|break addr 设置一个物理地址类型中断
pb addr if "expression" 设置一个条件触发的物理地址类型中断
sb <delta> 再过delta个脉冲周期就中断
sba <time> 执行到time个脉冲周期就中断(time为系统启动到现在的总数)
blist 显示所有的断点信息,与info break相同
bpe <断点序号> 应用指定断点序号(可用blist查询)
bpd <断点序号> 禁用指定断点序号(可用blist查询)
d|del|delete <断点序号> 删除指定的断点序号
watch 显示所有的读写断点信息

stop 遇到断点时停止运行

continue 遇到断点时显示断点信息并继续执行

r|read addr 将指定物理地址设为读断点

r|read addr <len> 将指定物理地址开始的len字节设为读断点

w|write addr 将指定物理地址设为写断点

w|write addr <len> 将指定物理地址开始的len字节设为写断点
unwatch 删除所有的读写断点

addr 删除一个指定的读写断点

四、CPU和内存操作

命令 参数 说明
x /nuf <addr>

显示起始线性地址为addr的指定个数内存信

n为数字

u为以下格式:b(8bit),h(16bit),w(32bit),g(64bit)

f为以下格式: x(16进制),d(10进制),u(10进制无符号),o(8进制),t(2进制),c(字符),s(ASCII),i(字符串)

m为延续上一次使用的格式输出

xp /nuf <addr>

显示起始物理地址为addr的指定个数内存信

n为数字

u为以下格式:b(8bit),h(16bit),w(32bit),g(64bit)

f为以下格式: x(16进制),d(10进制),u(10进制无符号),o(8进制),t(2进制),c(字符),s(ASCII),i(字符串)

m为延续上一次使用的格式输出

setpmem <addr> <datasize> <val>

设置指定物理地址addr处datasize个字节的内容为val.( datasize最大为4字节)

writemem
<filename> <addr> <len> 将指定物理地址addr开始的len个字节内存数据写入filename中
crc <addr1> <addr2> 显示addr1到addr2之间的CRC32值
info break 显示所有的断点信息

cpu 显示所有的CPU寄存器信息

idt 显示保护模式下中断描述符表信息

ivt 显示实模式下的中断向量表信息

gdt 显示GDT段描述符表信息

tss 显示TSS任务描述段信息

tab 显示页表

eflags 显示标志寄存器信息

symbols [string]

device 显示支持查看的设备信息

device [string] 显示指定设备的状态信息

device  [string] [string] 附加参数显示指定设备的状态信息
r|reg|regs|registers
显示CPU寄存器以及其内容
fp|fpu 显示FPU状态
mmx
显示MMX状态
xmm|sse 显示SSE状态(xmm寄存器)
sreg 显示段寄存器
dreg 显示调试寄存器
creg 显示控制寄存器
page 线性地址 显示线性地址所在页面到物理页面的映射
ptime 打印当前时间
print-stack <word数> 打印栈顶以下指定个数的word数据,默认是16个
?|calc 表达式

表达式中可以引用任何通用寄存器,opmask寄存器和段寄存器,可以使用任何算术和逻辑运

支持特殊的":"运算符来计算地址,实模式和v86模式下为"段:偏移",或保护模式下的"选择子:偏移"

文章分类
联系我们
联系人: powereye
Email: zqs@someapp.cn
QQ: 1134846
微信: powereye