pa (Step to Address)
pa命令执行程序直到到达指定地址,每一步都会被显示出来。
语法
用户模式
[~Thread] pa [r] [= StartAddress] StopAddress ["Command"]
内核模式
pa [r] [= StartAddress] StopAddress ["Command"]
参数
- Thread
- 指定要继续执行的线程。所有其它线程都会被冻结。该语法的更多信息,查看线程语法。只能在用户模式下指定线程。
- r
- 打开或关闭对寄存器和标志位的显示。默认情况下,寄存器和标志位会被显示出来。可以通过par、pr、tr或.prompt_allow -reg命令来禁止显示。这些命令都可以用来控制该设置,并且可以覆盖之前使用这些命令进行任何设置。
也可以通过l-os命令禁止对寄存器的显示。这个设置和其他三个命令是分开的。要控制哪些寄存器和标志位被显示出来,使用rm (Register Mask)
命令。
- StartAddress
- 指定执行开始的地址,否则从指令指针指向的指令开始执行。该语法的更多信息,查看地址和地址区域语法。
- StopAddress
- 指定要停止执行的地址。该地址必须刚好是一条指令的地址。
- Command
- 指定在单步完成后要执行的调试器命令。该命令在标准的pa结果显示出来之前就会执行。如果还使用了StopAddress,这个命令会在到达StopAddress后才会执行(但是在最后一步的结果显示出来之前)。
环境
模式 |
用户模式、内核模式 |
目标 |
仅活动调试 |
平台 |
所有 |
注释
pa 命令使得目标开始执行。这种执行会持续到到达指定的指令或遇到断点。
注意 如果在内核模式下使用该命令,在任何虚拟地址空间中,只要遇到指定的虚拟地址处的指令,执行就会停止。
执行时,所有步骤都会明确的显示出来。调用的函数被当作一个单位来执行。但是,该命令的显示和直接重复使用p (Step)直到程序计数器到达指定地址类似。
例如,下面的命令单步执行目标的代码直到到达当前函数的返回地址。
0:000> pa @$ra
下面的命令演示了pa和kb命令命令一起用来显示堆栈回溯:
0:000> pa 70b5d2f1 "kb"
附加信息
相关命令的更多信息,查看控制调试目标。
Build machine: CAPEBUILD