执行命令
c 继续执行 stepi [count] 执行一定count数量的指令, 缺省值为1
si [count] 执行一定count数量的指令, 缺省值为1
step [count] 执行一定count数量的指令, 缺省值为1 s [count] 执行一定count数量的指令, 缺省值为1
Ctrl-C 停止执行, 返回到命令行方式 Ctrl-D 如果命令行有空行,则退出(不知道什么意思) quit 退出 q 退出 |
设置断点
vbreak seg:off 设置一个虚拟地址断点 vb seg:off lbreak addr 设置线性地址断点 lb addr pbreak [*] addr 设置物理地址断点 pb [*] addr (*号代表可选的GDB能力) break [*] addr b [*] addr info break 显示所有断点
delete n 删除断点 del n d n |
操作内存
x /nuf addr 显示在addr线性内存处的内存数据
xp /nuf addr 显示在addr物理内存处的内存数据 n 要显示的数据个数
u 显示单元大小; 下面其中之一 b 一字节 h 2字节 w 4字节 g 8字节 NOTE: 这里的格式和Intel的不一样,但是与GDB转换相一致 f 显示格式下面其中之一 x 使用16进制 d 使用10进制 u 使用无符号10进制 o 使用8进制 t 使用2进制 n, f, 和 u 都是可选的参数. u 和 f 缺省值为上一次设置的值。如果没有指定 则缺省值为w和x。 n 的缺省值为1。 Addr 也是可选的参数。如果不指定则会自动地指定为下一个地址。 setpmem addr datasize val 设置addr一片大小为datasize的物理内存的值为val crc addr1 addr2 显示范围从addr1到addr2的校验 info dirty 显示从上一次显示到现在为止的脏(被写到的)的物理页 显示的值为最上头的20个字节(页地址) 上面这些我自己看不明白什么意思
|
|
显示信息命令
info program 程序执行情况可以用info p代替 info registers 列出cpu的寄存器和寄存器里面的值可以用info r代替 info break 当前所有断点的信息可以用info b代替 |
操作 CPU 寄存器
set $reg = val 设置一个寄存器reg的值为val. 寄存器可以是: eax, ecx, edx, ebx, esp, ebp, esi, edi. 通常不应该修改下列: eflags, cs, ss, ds, es, fs, gs. 例子: set $eax = 0x01234567 set $edx = 25 info registers 查看寄存器信息 dump_cpu 查看完整的cpu状态信息 set_cpu 设置cpu状态 |
新命令
每执行一条指令就显示出相应的反汇编命令,导致异常的指令并不是真正的执行,因此不能被追踪。
禁止追踪.
显示当前时间(从开始模拟到现在为止的tick数量,以2^32为模)
插入一个基于时间设置在之后的断点,delta是一个64位的后面有一个L字符的整型数,如1000L。好像是偏移的意思。
插入一个基于指定时间的断点
记录控制台输入到文件 filename. 文件由0和许多行”%s %d %x”组成, 第一个词为事件类型, 第二个是时间戳第三个是事件的数据细节
从文件filename回放控制台输入. 可以在控制台窗口直接进行额外的输入.
显示堆栈顶端num words个16位的字。只有堆栈段的基地址为0的时候才能可靠的工作在保护模式下。
当遇到一个监视点时停下来回到提示命令行方式.
碰到监视点时不停止
显示当前监视点的状态.
去掉所有监视点.
在address地址出加入一个读监视点
在address地址处加入一个写监视点.
从address 地址处去掉一个读监视点.
从address 地址处去掉一个写监视点
. .
触发show信息. show – 显示当前的show模式 show "mode" – 当处理器转换模式时显示 show "int" – 当中断发生时显示 show "call" – 当调用发生时显示 show "ret" – 当iret发生时显示 show "off" - toggles off symbolic info show "dbg-all" – 打开所有的show标记 show "none" – 关闭所有的show标记 |