NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----87

cc682/NetRoc

http://netroc682.spaces.live.com/

!searchpte

!searchpte 在物理内存中搜索指定的页面帧序号(PFN)。

语法

!searchpte PFN 
!searchpte -? 

参数

PFN

以16进制格式指定PFN。

-?

在调试器命令窗口中显示该扩展命令的帮助。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

注释

任何时候可以通过按下CTRL+BREAK (WinDbg) 或CTRL+C (KD)来中止命令。

附加信息

关于页表和页目录的的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!sel

!sel 扩展命令已经废除,使用dg (Display Selector) 命令替代。

!session

在Windows 2000中,!session命令显示一个或多个用户会话,或者显示运行在多个用户会话中的指定进程。

在Windows XP和之后版本Windows中,!session 用于控制会话上下文。也可以显示所有用户会话的列表。

语法

Windows 2000的语法

!session [SessionID [2 Image]] 

Windows XP和之后的语法

!session 
!session -s DefaultSession 
!session -? 

参数

SessionID

(仅Windows 2000) 指定要显示的会话ID。如果为-1或者省略,则显示所有会话。

2 Image

(仅Windows 2000) 指定进程的映像名。SessionID 指定的会话中所有具有这个名字的进程都会显示出来。如果省略Image,则显示 csrss.exe进程。省略该参数可以很容易的列出所有用户会话,因为每个用户会话中都有且只有一个csrss.exe进程。

-s DefaultSession

(Windows XP和之后)会话上下文设置为指定值。如果DefaultSession是-1,则将会话上下文设置为当前会话。

-?

(Windows XP和之后) 在调试器命令窗口中显示该扩展命令的帮助文本。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

这实际上是两个不同的扩展命令。Windows 2000上的!session 用来显示某个用户会话的信息。

Windows XP和之后系统上的!session 用于控制会话上下文。不带参数使用!session 会显示目标机上活动会话的列表。使用!session /s DefaultSession 会把会话上下文改变成新的默认值。

设置会话上下文时,进程上下文也会自动切换成该会话中的活动进程。这时总是应该使用.cache forcedecodeptes

关于会话和会话上下文相关的命令,查看改变上下文

附加信息

关于用户会话和会话管理器(smss.exe)的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!spoolsum

!spoolsum 扩展命令对当前会话的内存池信息进行摘要。

语法

!spoolsum [-Option]
!spoolsum -? 

参数

Option

可以是下面这些选项的任意组合:

-n

指定搜索非分页池。

-p

搜索分页池。

-f

指定搜索read failure range。

-?

在调试器命令窗口中显示命令帮助。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

注释

要显示非当前会话的其他会话的内存池摘要信息,可以使用!session 扩展来设置当前会话。

如果选项中没有指定-n-p,则分页和非分页池都会搜索。

附加信息

关于会话的信息,查看改变上下文。关于内存池和pool tag的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!spoolused

!spoolused 扩展用于显示指定会话拥有的分页内存池的内存使用摘要信息。

语法

!spoolused -p [-s Session] [TagString]] 
!spoolused -? 

参数

-p

该选项需要一直包含。

-s Session

指定要显示内存池的会话。Session总是被当作10进制数字。如果Session等于-1,则使用当前会话。如果Session 等于-2,则使用会话上下文

TagString

指定pool tag。TagString 是区分大小写的ASCII字符串。星号(*)可以代表任意数量的字符,问号(?)用来代表单个字符。如果没有使用星号,TagString必须刚好是四个字符。

-?

在调试器命令窗口中显示帮助文本。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

附加信息

关于会话的信息,查看改变上下文。关于内存池和pool tag的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!sprocess

!sprocess 扩展显示指定的会话进程,或者指定会话中的所有进程。

语法

!sprocess Session [Flags [ImageName]] 
!sprocess -?

参数

Session

指定拥有需要的进程的会话。Session总是被当作10进制数字。

Session 可以是下面这些值:

-1

使用当前会话。这是默认值。

-2

使用会话上下文

-4

按照会话显示所有进程。

 

Flags

指定显示级别。Flags 可以是下面这些位的任意组合。默认值为0。

0x0

显示最少信息。

Bit 0 (0x1)

显示时间和优先级统计。

Bit 1 (0x2)

显示进程关联的线程和事件列表,以及这些线程的等待状态。

Bit 2 (0x4)

显示进程关联的线程列表。如果这个位没有和bit 1(0x2)一起使用,则每个线程显示在单独一行上。如果和 bit 1一起使用,则每个线程都会显示调用堆栈。

Bit 3 (0x8)

对每个函数还显示返回地址、堆栈指针,以及在Itanium系统上的bsp寄存器值。不会显示函数参数。

Bit 4 (0x10)

每个函数仅显示返回地址。不显示参数和堆栈指针。

 

ImageName

指定要显示的进程名。所有可执行映像名匹配ImageName 的进程都会显示出来。映像名必须和EPROCESS块中的一样。一般来说,这是包含扩展名(一般是.exe)的可执行文件名字,超出15个字符的会截断。不支持包含空格的映像名。

-?

在调试器命令窗口中显示帮助文本。该帮助文本有一些省略。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

注释

除了还会显示_MM_SESSION_SPACE 和_MMSESSION的地址之外,该扩展的输出和!process命令类似。

附加信息

关于会话和内核模式下的进程地信息,查看改变上下文。关于分析进程和线程的信息,查看 Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!srb

!srb 扩展显示SCSI Request Block (SRB)的信息。

语法

!srb Address 

参数

Address

指定目标机上的SRB的16进制地址。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

SRB 是系统定义的用于从SCSI类驱动程序到SCSI端口驱动程序进行I/O请求通讯的结构。

附加信息

关于SRB的信息,查看Windows Driver Kit (WDK)文档。

!stacks

!stacks 扩展显示内核调用堆栈的信息。

语法

Windows 2000的语法:

!stacks [Detail

Windows XP和之后的语法:

!stacks [Detail [FilterString]] 

参数

Detail

指定要显示的详细级别。下表是Detail的合法值。

0

显示当前内核调用堆栈的摘要。这是默认值。

1

显示当前页换出的堆栈,以及当前内核栈。

2

显示所有调用堆栈的完整参数,以及当前页换出的堆栈和当前内核堆栈。

 

FilterString

(Windows X和之后) 只显示符号包含指定的字符串的线程。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

!stacks 扩展给出每个线程状态的简单摘要。可以用它来代替!process扩展命令对系统进行快速查看,特别是在类似资源争用或者死锁这样的多线程问题时。

!findstack用户模式扩展命令也可以显示特定调用堆栈的信息。

下面是一个最简单的!stacks命令示例:

kd> !stacks 0
Proc.Thread  .Thread  ThreadState  Blocker
                                     [System]
   4.000050  827eea10  Blocked    +0xfe0343a5

                                     [smss.exe]

                                     [csrss.exe]
  b0.0000a8  82723b70  Blocked    ntoskrnl!_KiSystemService+0xc4
  b0.0000c8  82719620  Blocked    ntoskrnl!_KiSystemService+0xc4
  b0.0000d0  827d5d50  Blocked    ntoskrnl!_KiSystemService+0xc4
.....

第一列是进程ID和线程ID(用点号隔开)。

第二列是线程的ETHREAD块的当前地址。

第三列是线程的状态(initialized, ready, running, standby, terminated, transition, 或blocked)。

第四列显示的是线程调用堆栈顶部的地址。

下面是更详细一些的!stacks输出:

kd> !stacks 1
Proc.Thread  .Thread  ThreadState  Blocker
                                     [System]
   4.000008  827d0030  Blocked    ntoskrnl!MmZeroPageThread+0x66
   4.000010  827d0430  Blocked    ntoskrnl!ExpWorkerThread+0x189
   4.000014  827cf030  Blocked    Stack paged out
   4.000018  827cfda0  Blocked    Stack paged out
   4.00001c  827cfb10  Blocked    ntoskrnl!ExpWorkerThread+0x189
.....
                                     [smss.exe]
  9c.000098  82738310  Blocked    Stack paged out
  9c.0000a0  826a5190  Blocked    Stack paged out
  9c.0000a4  82739d30  Blocked    Stack paged out

                                     [csrss.exe]
  b0.0000bc  826d0030  Blocked    Stack paged out
  b0.0000b4  826c9030  Blocked    Stack paged out
  b0.0000a8  82723b70  Blocked    ntoskrnl!_KiSystemService+0xc4
.....

kd> !stacks 2
Proc.Thread  .Thread  ThreadState  Blocker
                                     [System]
   4.000008  827d0030  Blocked    ntoskrnl!KiSwapThread+0xc5
                                  ntoskrnl!KeWaitForMultipleObjects+0x2b4
                                  ntoskrnl!MmZeroPageThread+0x66
                                  ntoskrnl!Phase1Initialization+0xd82
                                  ntoskrnl!PspSystemThreadStartup+0x4d
                                  ntoskrnl!CreateSystemRootLink+0x3d8
                                  +0x3f3f3f3f
   4.000010  827d0430  Blocked    ntoskrnl!KiSwapThread+0xc5
                                  ntoskrnl!KeRemoveQueue+0x191
.....

附加信息

关于内核栈的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!swd

!swd 扩展指定处理器上的软件看门狗记时器状态(software watchdog timer state),包括线程的延迟过程调用(DPC)和看门狗计时器状态。

语法

!swd [Processor

参数

Processor

指定处理器。如果省略Processor ,则显示目标机上所有处理器的信息。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

注释

当Windows停止响应时,看门狗定时器用于关闭或重起Windows。事件以秒为单位显示。

!sysinfo

!sysinfo 扩展命令从dump文件或活动系统中读取和显示指定的SMBIOS、高级配置电源接口(ACPI) 、CPU信息。

语法

!sysinfo cpuinfo [-csv [-noheaders]]
!sysinfo cpumicrocode [-csv [-noheaders]]
!sysinfo cpuspeed [-csv [-noheaders]]
!sysinfo gbl [-csv [-noheaders]]
!sysinfo machineid [-csv [-noheaders]]
!sysinfo registers
!sysinfo smbios [-csv [-noheaders]] {-debug -devices | -memory | -power | -processor | -system | -v} 
!sysinfo -? 

参数

cpuinfo

显示处理器的信息。

cpumicrocode

(仅GenuineIntel处理器) 显示初始的和缓存的微代码处理器版本(the initial and cached microcode processor versions)。

cpuspeed

显示最高和当前的处理器速度。

gbl

显示ACPI表的BIOS列表。

machineid

显示SMBIOS、BIOS、固件(firmware)、系统(system)和主板(baseboard)的机器ID(machine ID)信息。

registers

显示MSR。

smbios

显示SMBIOS表。

-csv

以逗号分隔,变长(CSV)格式显示所有数据。

-noheaders

不显示CSV格式的头。

-debug

用标准格式和CSV格式显示输出。

-devices

显示SMBIOS表中的设备条目。

-memory

显示SMBIOS表中的内存条目。

-power

显示SMBIOS表中的电源条目。

-processor

显示SMBIOS表中的处理器条目。

-system

显示SMBIOS表中的系统条目。

-v

详细输出。显示SMBIOS表中的表项的详细信息。

-?

在调试器命令窗口中显示命令帮助。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP base system
Windows 2003 base system

不可用

Windows XP, Service Pack 2和之后
Windows 2003, Service Pack 1和之后

Kdexts.dll

 

注释

该扩展仅在调试没有从内核或者完整dump文件转变成minidump的dump文件时,或者启动完成并已联机(例如,在登陆提示符下)的活动系统上有用。

可以在单个命令中组合使用-debug-devicesmemory-power-processor-system、以及 -v 参数。

下面这些参数只在特定系统中支持:

  • gbl 参数仅在支持ACPI的机器上工作。
  • smbios 参数仅在支持SMBIOS的目标机上工作。
  • registers 参数不能用于Itanium目标机,因为它们不使用MSR。

Microsoft尽了一切可能从这些记录中除去个人身份信息(personally identifiable information (PII))。Dump文件中去除掉了所有PII。但是,在活动系统上,一些PII可能还没有去掉。所以,PII字段可能输出为0或者空白,即使它们实际包含了信息。

要停止使用了cpuinfogblregisters、或smbios 参数的命令,可以按下CTRL+BREAK (WinDbg) 或CTRL+C (KD)。

!sysptes

!sysptes 扩展显示系统页表项(PTE)格式化后的信息。

语法

!sysptes [Flags

参数

Flags

指定显示的详细级别。Flags 可以是下面这些位的任意组合。默认值为0:

Bit 0 (0x1)

显示空闲PTE的信息。

Bit 1 (0x2)

(仅Windows NT 4.0 和Windows 2000) 在页面使用统计中显示未使用的页面。

(Windows XP和之后) 在global special pool 中显示空闲PTE信息。

Bit 2 (0x4)

(Windows 2000和之后) 显示所有分配来用于映射锁定页面(locked pages)的系统PTE的详细信息。

Bit 3 (0x8)

(仅Windows 2000 和Windows XP) 显示nonpaged pool expansion free PTE information。如果设置了这个位,则不显示其他列表。如果同时设置了0x1和0x8,则显示所有的nonpaged pool expansion free PTE。如果只设置0x8,则仅显示总数。

Bit 4 (0x10)

(Windows Vista 和之后) 显示会话的special pool free PTE信息。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

要查看指定的PTE,使用!pte扩展。

下面是Windows 2000系统的示例:

kd> !sysptes 1

System PTE Information
  Total System Ptes 50962
     SysPtes list of size   1 has 389 free
     SysPtes list of size   2 has  95 free
     SysPtes list of size   4 has  55 free
     SysPtes list of size   8 has  35 free
     SysPtes list of size  16 has  27 free
 
    starting PTE: c03c7000
    ending PTE:   c03f8c44

loading (99% complete)

      free ptes: c03c8d60   number free: 45134.

  free blocks: 1   total free: 45134    largest free block: 45134

     Page    Count
       a0        2.
       a1        2.
       a2        2.
       a3        2.
......

在Windows XP和之后版本的Windows中,除了不包含末尾的页面计数统计之外,输出是类似的。下面是Windows XP系统上的示例:

kd> !sysptes 1

System PTE Information
  Total System Ptes 571224
     SysPtes list of size 1 has 361 free
     SysPtes list of size 2 has 91 free
     SysPtes list of size 4 has 48 free
     SysPtes list of size 8 has 36 free
     SysPtes list of size 9 has 29 free
     SysPtes list of size 23 has 29 free
 
    starting PTE: fffffe0059388000
    ending PTE:   fffffe00597e3ab8

      free ptes: fffffe0059388000   number free: 551557.
      free ptes: fffffe00597be558   number free: 104.
      free ptes: fffffe00597d2828   number free: 676.

  free blocks: 3   total free: 552337    largest free block: 551557

附加信息

关于页表和PTE的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals。

posted on 2008-08-04 13:48 NetRoc 阅读(489) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜