Debugging Tools for Windows |
r 命令显示或修改寄存器、浮点寄存器、标志位、伪寄存器和预定义别名。
用户模式
r.
内核模式
r.
类型 | 显示格式 |
---|---|
ib | Signed byte |
ub | Unsigned byte |
iw | Signed word |
uw | Unsigned word |
id | Signed DWORD |
ud | Unsigned DWORD |
iq | Signed quad-word |
uq | Unsigned quad-word |
f | 32位浮点数 |
d | 64位浮点数 |
模式 | 用户模式、内核模式 |
目标 | 活动目标、崩溃转储 |
平台 | 所有 |
如果未指定Register,r命令显示所有非浮点数寄存器,而rF 命令显示所有浮点数命令。可以通过rm (Register Mask)命令改变这种行为。
如果指定了Register 但是省略等于号(=)和Value 参数,命令显示寄存器当前的值。
如果指定了Register 和等于号(=) 但是省略Value,命令会显示寄存器的当前值并提示输入新值。
如果指定了Register、等于号(=)和Value,命令将寄存器改变为给定的值。(如果启用了安静模式(quiet mode) ,可以省略等于号。通过sq (Set Quiet Mode)命令可以打开安静模时。内核模式下,可以通过KDQUIET环境变量来打开安静模式。)
可以指定多个寄存器,并用逗号分隔它们。
用户模式下,r命令显示当前线程关联的寄存器。关于线程的更多信息,查看控制进程和线程。
内核模式下,r命令显示当前寄存器上下文关联的寄存器。可以设置寄存器上下文来匹配特定线程、上下文记录或陷阱帧。只有指定的寄存器上下文的最终要的寄存器会被实际显示出来。关于寄存器上下文的更多信息,查看寄存器上下文。
使用名字指定浮点数寄存器时,不要求使用F选项。指定单精度浮点数时,除10进制值之外还会显示原始的16进制值。
下面这些Mask位支持x86处理器或x64处理器。
位 | 值 | 说明 |
---|---|---|
0 1 |
0x1 0x2 |
显示基本的整数寄存器。(设置这些位中的一个或全部有相同作用。) |
2 | 0x4 | 显示浮点数寄存器。 |
3 | 0x8 | 显示段寄存器。 |
4 | 0x10 | 显示MMX寄存器。 |
5 | 0x20 | 显示调试寄存器。在内核模式下,设置这些位也会显示CR4寄存器。 |
6 | 0x40 | 显示SSE MMX寄存器。 |
7 | 0x80 | (仅内核模式) 显示CR0、CR1和CR3寄存器。 |
8 | 0x100 | (仅内核模式) 显示描述符合任务状态寄存器。 |
下面这些Mask位支持Itanium处理器。
位 | 值 | 说明 |
---|---|---|
0 1 |
0x1 0x2 |
显示基本的整数寄存器。(设置这些位中的一个或全部有相同作用。) |
2 | 0x4 | 显示浮点数寄存器。 |
3 | 0x8 | 显示高位,浮点数寄存器(f32 到 f127)。(不太明白,原文是Displays the high, floating-point registers (f32 to f127)) |
4 | 0x10 | 显示用户调试寄存器。 |
5 | 0x20 | (仅内核模式) 显示KSPECIAL_REGISTERS。 |
下面这些示例说明了r命令在x86处理器上的使用。
在内核模式下,下面的命令显示处理器2的寄存器。
用户模式下,下面的命令显示线程2的寄存器。
下面的命令显示关联到所有线程的eax 的值(按线程的顺序)。
这个命令将当前线程的eax寄存器设置为0x000000FF。
该命令将st0寄存器设置为1.234e+10 (F是可选的)。
该命令显示0标志位(ZF)。
下面的命令将xmm0寄存器显示为16个unsigned byte,然后按双精度浮点数格式显示xmm1寄存器的完整内容。
如果当前语法是C++,必须在寄存器前面加上at符号(@)。因此,可以使用下面的命令将ebx的值复制给eax。
下面的命令使用r命令显示寄存器的方法来显示伪寄存器。
也可以使用r命令来创建预定义别名(fixed-name aliases)。这些别名不是寄存器或伪寄存器,虽然它们和r命令关联。关于这些别名的更多信息,查看使用别名。
下面是在一个Itanium处理器上使用r.命令的示例。
1: kd> r.
r25=ffffffff`d0000006 r45=e0000000`ffff0b18