Debugging Tools for Windows |
!running扩展命令显示目标机上所有处理器上正在运行的线程的列表。
Windows 2000 | 不可用 |
Windows XP和之后 | Kdexts.dll |
不带参数时,!running会显示所有活动处理器和空闲处理器的亲和性(affinity)。对于所有的活动处理器,还会显示处理器控制块(PRCB)的当前和下一线程字段,以及16个内置的排队自旋锁的状态。
下面是一个Itanium多处理器系统的示例:
System Processors 3 (affinity mask)
Idle Processors 0
Prcb Current Next
0 e0000000818f8000 e0000000818f9e50 e0000000866f12f0 ................
1 e000000086f16010 e00000008620ebe0 e000000086eddbc0 .O..............
每行末尾的16个字符是用来表示内置排队自旋锁的(PRCB 中的LockQueue)。点号( . )表示这个锁没有使用, O表示这个锁被该处理器拥有, W表示处理器排队在这个锁上。要查看自旋锁队列的更多信息,可以使用!qlocks。
下面的例子显示了活动和空闲处理器,以及它们的调用堆栈:
System Processors f (affinity mask)
Idle Processors f
All processors idle.
Prcb Current Next
0 ffdff120 805495a0 ................
ChildEBP RetAddr
8053e3f0 805329c2 nt!RtlpBreakWithStatusInstruction
8053e3f0 80533464 nt!_KeUpdateSystemTime+0x126
ffdff980 ffdff980 nt!KiIdleLoop+0x14
1 f87e0120 f87e2e60 ................
ChildEBP RetAddr
f87e0980 f87e0980 nt!KiIdleLoop+0x14
2 f87f0120 f87f2e60 ................
ChildEBP RetAddr
f87f0980 f87f0980 nt!KiIdleLoop+0x14
3 f8800120 f8802e60 ................
ChildEBP RetAddr
f8800980 f8800980 nt!KiIdleLoop+0x14
关于调试多处理器计算机的信息,查看多处理器语法。