在上一篇中,叙述了多种断点类型以及设置断点的命令。在这一节中,主要讲解各种改变上下文的指令。这些指令包括单步步入,单步不步入,运行指令。
t(Trace) 单步步入
t 命令执行单条指令或源码行,并选择性的显示所有寄存器和标志位的结果。当发生子过程调用或中断时,它们的每一步也会被跟踪。
用户模式
[~Thread] t [r] [= StartAddress] [Count] ["Command"]
内核模式
t [r] [= StartAddress] [Count] ["Command"]
ta 命令执行到指定的地址
用户模式
[~Thread] ta [r] [= StartAddress] StopAddress
内核模式
ta [r] [= StartAddress] StopAddress
tb 命令执行程序直到遇到分支指令
tb [r] [= StartAddress] [Count]
tc命令执行程序直到到达call指令。
用户模式
[~Thread] tc [r] [= StartAddress] [Count]
内核模式
tc [r] [= StartAddress] [Count]
tct 命令执行程序直到遇到call指令或return指令。
用户模式
[~Thread] tct [r] [= StartAddress] [Count]
内核模式
tct [r] [= StartAddress] [Count]
th 命令继续执行程序直到到达任何种类的分支指令,包括条件或非条件跳转、调用、返回和系统调用。
用户模式
[~Thread] th [r] [= StartAddress] [Count]
内核模式
th [r] [= StartAddress] [Count]
tt 命令执行程序直到遇到return指令。
用户模式
[~Thread] tt [r] [= StartAddress] [Count]
内核模式
tt [r] [= StartAddress] [Count]
P (STEP)单步不步入
p 命令执行一条指令或者一行源码,并且选择性的显示所有寄存器和标志位的结果。当发生子函数调用或中断时,他们被当作单独的一步。
用户模式
[~Thread] p [r] [= StartAddress] [Count] ["Command"]
内核模式
p [r] [= StartAddress] [Count] ["Command"]
pa命令执行程序直到到达指定地址,每一步都会被显示出来。
用户模式
[~Thread] pa [r] [= StartAddress] StopAddress ["Command"]
内核模式
pa [r] [= StartAddress] StopAddress ["Command"]
pc执行程序直到到达一条call指令。
用户模式
[~Thread] pc [r] [= StartAddress] [Count]
内核模式
pc [r] [= StartAddress] [Count]
pct 命令执行程序,直到遇到call指令或返回指令。
用户模式
[~Thread] pct [r] [= StartAddress] [Count]
内核模式
pct [r] [= StartAddress] [Count]
ph命令执行程序直到遇到任何种类的分支指令,包括条件或非条件跳转、调用、返回和系统调用。
用户模式
[~Thread] ph [r] [= StartAddress] [Count]
内核模式
ph [r] [= StartAddress] [Count]
pt 命令执行程序直到遇到返回指令。
用户模式
[~Thread] pt [r] [= StartAddress] [Count] ["Command"]
内核模式
pt [r] [= StartAddress] [Count] ["Command"]
g (Go)
命令开始指定进程或线程的执行。这种执行将会在程序结束、遇到BreakAddress 或者其他造成调试器停止的事件发生时停止。
用户模式语法
[~Thread] g[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
内核模式语法
g[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
gc 命令使用和遇到断点时一样的方式(单步、跟踪或自由执行)来从一个条件断点恢复执行。也就是原来是pt,则现在还是pt. 常用于条件断点中,关于条件断点,以后会讲。
gh命令将给定线程的异常标识为已处理,并且允许该线程从产生异常的指令继续执行。
用户模式语法
[~Thread] gh[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
内核模式语法
gh[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
gn和gN 命令继续给定线程的执行,但是不将异常标记为已处理。这样使得应用程序的异常处理器可以处理该异常。
用户模式语法
[~Thread] gn[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
[~Thread] gN[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
内核模式语法
gn[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
gN[a] [= StartAddress] [BreakAddress ... [; BreakCommands]]
gu命令使得目标继续执行直到当前函数完成。
用户模式语法
[~Thread] gu
内核模式语法
gu