bochs一般命令

info用于查看各种数据,tab表示页表

所示为虚拟地址映射情况:
左边是32为位虚拟地址范围,右边是虚拟地址对应的物理地址。
虚拟地址映射情况

用 b h w g 来表示”显示单元的大小,bochs中字为2个字节。
b 一个字节
h 半个字,2个字节
w 一个字,4个字节
g 双字,8个字节
bochs 支持 八进制 011,十进制11,十六进制0x11。十六进制只支持0x前缀,不支持h后缀。

  • 指令 xp / nuf <addr>
    xp / x 查看内容是以 "显示单元“为单位,默认4字节
    n 指要显示的“显示单元”数
    u “显示单元”大小
    f 用什么进制
    比方
    xp /b 0x7c00
    xp /w 0x0
    xp 0x7c00

xp/2 0xffff0

<bochs:4> xp/2 0xffff0
[bochs]:
0x00000000000ffff0 <bogus+       0>:    0x00e05bea      0x2f3130f0
  • 指令u / disasm [/num] [start] [end],后面跟上需要汇编的指令书、起始线性地址、终止线性地址。
<bochs:5> u/1 0xffff0
00000000000ffff0: (                    ): jmpf 0xf000:e05b          ; ea5be000f0
  • "Debugger control "类
  1. show mode :每次CPU变换模式时就提示。
  2. show int:每次有中断时就提示,同时显示三种中断类型: softint软件主动触发的中断,extint来自外部设备的中断、iret只显示iretd指令有关的信息。
  3. show call :每次有函数调用发生时就会提示。
  4. traceon | off 如果该项设on,每次执行一条指令,bochs都会将反汇编代码打印到控制台,这样单步调试时免得看源码了。
  • **“Execution control" 类 **
    c | cont |} continue ,左边列出的三个命令都是向下继续执行,若没有断点则一直执行。
    s | step [count ]执行 count 条指令,count是单步执行的指令数。
    p | n | next 执行1条指令,若是函数调用,则把函数当作一整体执行。最常用n。

  • ”Breakpoint management" 类
    以地址打断点:
    vb | vbreak [seg: off] 以虚拟地址增加断点。 vb
    lb | lbreak [addr] 以线性地址添加断点。 lb
    pb | pbreak | b | break [addr] 以物理地址添加断点。 b
    以指令数打断点:
    sb [delta] delta 表示增量。再执行 delta数条指令就中断。
    sba [time] cpu从运行开始,执行time条指令时中断,从0开始的指令数。
    以读写IO打断点:
    watch 子命令
    watch r|read [phy_addr] 设置读断点,如果物理地址phy_addr 有读操作停止运行。
    watch w|write [phy_addr] 设置些断点,如果物理地址 phy_addr 有写操作停止运行。
    watch显示所有读写断点。
    unwatch 清除所有断点
    unwatch [phy_addr]清除在此地址上的读写断点
    blist 显示所有断点信息, 功能等同于 info b
    bpd | bpe [n] 禁用断点 / 启用断点,n是断点号。
    d|del|delete [n] ,删除某断点,n是断点号

  • CPU and memory contents"类
    x/ nuf [line_addr]显示线性地址内容,n、u、f 是三个参数。
    n 是“显示单元” 的大小
    f 是显示格式

  1. x 16进制
  2. d 10进制
  3. u 无符号10
  4. o 8
  5. t 2
  6. c字符
  7. s ASCII显示
  8. i instr 显示

xp / nuf [phy_addr]显示物理地址 phy_addr 处的内容,注意与x区分,x是线性地址。
setpmem [phy_addr] [ size] [val] 设置以phy_addr为起始,连续size个字节为内容的val。size最多设置 4 个字节宽度的数据,大于4会报错。小于等于4正确。 setpmem 0x7c00 4 0x9
r | reg | regs | registers 任意四个命令之一 便可以显示8个通用寄存器的值+eflags寄存器+eip寄存器。
ptime显示 bochs启动后,总执行指令数。
print-stack [num]显示堆栈,num默认为 16,表示打印的栈条目数。输出的栈,栈顶在上,低地址在上,高地址在下,与栈的实际方向相反,需要注意
? | calc 内置的计算器。
info 是个指令族:
info pb | pbreak | b | break查看断点信息。
info CPU显示CPU所有寄存器的值,包括不可见。
info idt显示中断向量表 IDT。
info gdt [num]显示全局描述符表 GDT。
info ldt显示局部描述符吧 LDT
info tss显示任务状态段 TSS。
info ivt [num]显示中断向量表 IVRT。

info flags | eflags 显示状态寄存器。
sreg显示所有段寄存器值
dreg 显示所有调试寄存器值
creg 显示所有控制寄存器的值
info tab显示页表中线性地址到物理地址的映射
page line_addr显示线性地址到物理地址的映射

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值