调试命令
1.设置断点
(1)设置断点:b 物理地址
例:b 0x7c00 在物理地址0x7c00处设置断点
(2)查询目前已经设置过的断点:info break
2.程序执行控制命令
(1) c/cont/continue:执行程序,直到遇到断点
(2)s [count] execute count instructions, default is 1
step [count] (3) s [cpu] [count] for SMP simulation, execute count instructions on cpu, default is 1
step [cpu] [count]
(4) s all [count] for SMP simulation, execute count instructions on all cpus
step all [count]
(5)Ctrl-C stop execution, and return to command line promptCtrl-D if at empty line on command line, exit
(6)q/quit/exit:退出debugger继续执行
3.寄存器查看
(1)info r 这条指令会查询基本的寄存器的值
(2)dump_cpu
这个命令显示的寄存器比info r的更全面,而且连影子寄存器的值都打印出来了。
4. 内存内容查询
(1)查询从某个地址开始的N个字节的内存:xp /Nbx 物理地址
例如:xp /32bx 0x90000 查询从0x90000开始的32个字节内容
(2)打印当前栈里的内容:print-stack
下面的例子里:040803c0是当前运行程序的线性地址,01ff53c0是对应的实际物理地址。
5. 反汇编
(1)u/disasm/disassemble start end,反汇编给定线性地址范围的指令。也可以是u /10 反汇编从当前地址开始的10条指令。如下图
对一段内存:disassemble 起始地址 终止地址
例如:disassemble 0x7c3e 0x7c40 反汇编这段地址的指令