p(步进)

p 命令执行单个指令或源行,并选择性地显示所有寄存器和标志的结果值。 当出现子例程调用或中断时,它们被视为单个步骤。

用户模式

[~Thread] p[r] [= StartAddress] [Count] ["Command"] 

内核模式

p[r] [= StartAddress] [Count] ["Command"] 

参数

线
指定要继续执行的线程。 所有其他线程都被冻结。 有关语法的详细信息,请参阅线程语法。 只能在用户模式下指定线程。

r
打开和关闭寄存器和标志的显示。 默认情况下将显示寄存器和标志。 可以使用 prtr 或 .prompt_allow -reg 命令来禁用寄存器显示。 这三个命令控制相同的设置,可以使用其中任何一个命令来替代以前对这些命令的任何使用。

还可以使用 l-os 命令禁用寄存器显示。 此设置与其他三个命令是分开的。 要控制显示哪些寄存器和标志,请使用 rm (Register Mask) 命令。

StartAddress
指定应开始执行的地址。 如果不使用 StartAddress,则执行从指令指针指向的指令开始。 有关语法的详细信息,请参阅地址和地址范围语法

计数
指定要在停止之前逐步执行的指令或源行数。 每个步骤都显示为调试器命令窗口中的单独操作。 默认值为 1。

命令
指定在执行步骤后要执行的调试器命令。 此命令在显示标准 p 结果之前执行。 如果还使用 Count,则指定命令在完成所有单步之后执行(但在显示最终步骤的结果之前)。

环境

说明
模式 用户模式、内核模式
目标 仅限实时调试
平台 全部

其他信息

有关发出 p 命令和相关命令概述的详细信息,请参阅控制目标

注解

指定 Count 时,每个指令都会在逐步执行时显示。

如果调试器在单步执行时遇到调用指令或中断,则调用的子例程将完全执行,除非遇到断点。 在调用或中断之后的下一个指令中,控件将返回到调试器。

每个步骤执行单个程序集指令或单个源行,具体取决于调试器是处于程序集模式还是源模式。 使用 WinDbg 工具栏上的 l+t 和 l-t 命令或按钮在这些模式之间切换。

在 WinDbg 中快速单步执行多次时,调试信息窗口会在每个步骤后更新。 如果此更新导致响应时间变慢,请使用 .suspend_ui(挂起 WinDbg 接口)暂时挂起这些窗口的刷新。