NetRoc's Blog

N-Tech

 

WinDbg 文档翻译----82

     摘要: cc682/NetRoc http://netroc682.spaces.live.com/ !mca 在x86目标机上,!mca 扩展用于显示机器检查架构(machine check architecture (MCA))寄存器。在Itanium目标机上,!mca用于显示MCA错误记录。 语法 x86 目标机语法 !mca  Itanium目标机语法 !m...  阅读全文

posted @ 2008-07-24 14:44 NetRoc 阅读(631) | 评论 (0)编辑 收藏

WinDbg 文档翻译----81

cc682/NetRoc

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

!job

!job 扩展用来显示一个作业(job)对象。

语法

!job [Process [Flags]] 

参数

Process

指定要查看的job对象所关联的进程或者线程的16进制地址。如果省略或者设为-1(Windows 2000中)或者0 (Windows XP和之后),则显示当前进程关联的job对象。

Flags

指定显示中包含的内容。可以是任意下面这些位值的和。默认值为0x1:

Bit 0 (0x1)

显示job的设置和统计。

Bit 1 (0x2)

显示job中所有进程的列表。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

 

注释

下面是该扩展输出的示例:

kd> !process 52c
Searching for Process with Cid == 52c
PROCESS 8276c550  SessionId: 0  Cid: 052c    Peb: 7ffdf000  ParentCid: 0060
    DirBase: 01289000  ObjectTable: 825f0368  TableSize:  24.
    Image: cmd.exe
    VadRoot 825609e8 Vads 30 Clone 0 Private 77. Modified 0. Locked 0.
    DeviceMap e1733f38
    Token                             e1681610
    ElapsedTime                       0:00:12.0949
    UserTime                          0:00:00.0359
    .....
    CommitCharge                      109
    Job                               8256e1f0

kd> !job 8256e1f0
Job at ffffffff8256e1f0
  TotalPageFaultCount      0
  TotalProcesses           1
  ActiveProcesses          1
  TotalTerminatedProcesses 0
  LimitFlags               0
  MinimumWorkingSetSize    0
  MaximumWorkingSetSize    0
  ActiveProcessLimit       0
  PriorityClass            0
  UIRestrictionsClass      0
  SecurityLimitFlags       0
  Token                    00000000

附加信息

关于job对象的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!kb, !kv

!kb!kv 扩展命令已经废除。使用kb (Display Stack Backtrace)kv (Display Stack Backtrace) 命令来替代。

!loadermemorylist

!loadermemorylist 扩展显示Windows boot loader传递给Windows的内存分配列表。

语法

!loadermemorylist ListHeadAddress 

参数

ListHeadAddress

指定列表头的地址。

DLL

Windows NT 4.0

Kdexts.dll

Windows 2000

Kdexts.dll

Windows XP
Windows Server 2003

Kdexts.dll

Windows Vista和之后

Kdexts.dll

注释

该扩展是设计在Ntldr正在运行的系统引导早期使用的。它会在内存分配列表中显示开始位置、结束为止和每个页范围的类型。

任何时候按下CTRL+BREAK (WinDbg) 或CTRL+C (KD)都可以中断命令的执行。

!lockedpages

!lockedpages 扩展在Windows 2000中显示当前进程的driver-locked page,在Windows XP和之后的系统中显示指定进程的driver-locked page。

语法

Windows 2000的语法

!lockedpages 

Windows XP和之后的语法

!lockedpages [Process

参数

Process

(仅Windows XP和之后) 指定某个进程。如果省略Process,则使用当前进程。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

任何时候按下CTRL+BREAK (WinDbg) 或CTRL+C (KD)都可以中断命令的执行。

!locks (!kdext*.locks)

Kdextx86.dllKdexts.dll中的!locks 扩展命令显示内核ERESOURCE 锁的信息。

该命令不要和!ntsdexts.locks 扩展命令混淆。

语法

!locks [Options] [Address

参数

Options

指定要显示的信息数量。可以是下面这些选项的任意组合:

-v

显示每个锁的详细信息。

-p

显示锁的所有可能的信息,包括性能统计。

-d

显示所有锁的信息。否则只显示出现争用的锁。

Address

指定要显示的ERESOURCE 锁的16进制地址。如果Address为0或者省略,则显示系统中所有ERESOURCE 锁。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

!locks 扩展显示线程为资源而持有的所有的锁。锁可以是共享的(shared)或者独占的(exclusive),独占意味着其它线程不能访问该资源。当系统发生死锁时这个信息很有用。死锁是由于某个非执行的线程持有了某个资源的独占锁,但是其它执行的线程又需要这个所的时候会发生。

在Microsoft Windows 2000中通常可以通过查找非执行线程持有了某个执行线程请求的某个资源的独占锁的情况,来定位死锁。大多数的锁都是共享的。

下面是基本的!locks 输出的示例:

kd> !locks
**** DUMP OF ALL RESOURCE OBJECTS ****
KD: Scanning for held locks......

Resource @ 0x80e97620    Shared 4 owning threads
     Threads: ff688da0-01<*> ff687da0-01<*> ff686da0-01<*> ff685da0-01<*> 
KD: Scanning for held locks.......................................................

Resource @ 0x80e23f38    Shared 1 owning threads
     Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
KD: Scanning for held locks.

Resource @ 0x80d8b0b0    Shared 1 owning threads
     Threads: 80ed0023-01<*> *** Actual Thread 80ed0020
2263 total locks, 3 locks currently held

注意显示出来的每个线程的地址后面都跟有线程计数 (例如"-01")。如果某个线程后跟有 I "<*>",则该线程是锁的所有者。有些情况下,初始线程的地址会包含一个偏移。这种情况下,实际的线程地址也会显示出来。

如果想查看这些资源对象中某一个的更多信息,可以将"Resource @"后的地址作为其它命令的参数。要查看上面例子中的第二个资源,可以使用dt ERESOURCE 80d8b0b0 或者 !thread 80ed0020。或者也可以带-v选项再次使用!locks

kd> !locks -v 80d8b0b0

Resource @ 0x80d8b0b0    Shared 1 owning threads
     Threads: 80ed0023-01<*> *** Actual Thread 80ed0020

     THREAD 80ed0020  Cid 4.2c  Teb: 00000000 Win32Thread: 00000000 WAIT: (WrQueue) KernelMode Non-Alertable
         8055e100  Unknown
     Not impersonating
GetUlongFromAddress: unable to read from 00000000
     Owning Process 80ed5238
     WaitTime (ticks)          44294977
     Context Switch Count      147830             
     UserTime                  0:00:00.0000
     KernelTime                0:00:02.0143
     Start Address nt!ExpWorkerThread (0x80506aa2)
     Stack Init fafa4000 Current fafa3d18 Base fafa4000 Limit fafa1000 Call 0
     Priority 13 BasePriority 13 PriorityDecrement 0
ChildEBP RetAddr  
fafa3d30 804fe997 nt!KiSwapContext+0x25 (FPO: [EBP 0xfafa3d48] [0,0,4]) [D:\NT\base\ntos\ke\i386\ctxswap.asm @ 139]
fafa3d48 80506a17 nt!KiSwapThread+0x85 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\nt\base\ntos\ke\thredsup.c @ 1960]
fafa3d78 80506b36 nt!KeRemoveQueue+0x24c (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ke\queueobj.c @ 542]
fafa3dac 805ad8bb nt!ExpWorkerThread+0xc6 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ex\worker.c @ 1130]
fafa3ddc 8050ec72 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\nt\base\ntos\ps\create.c @ 2164]
00000000 00000000 nt!KiThreadStartup+0x16 [D:\NT\base\ntos\ke\i386\threadbg.asm @ 81]

1 total locks, 1 locks currently held

!logonsession

!logonsession 扩展显示指定的登陆会话(logon session)的信息。

语法

Free Build 语法

!logonsession LUID 

Checked Build语法

!logonsession LUID [InfoLevel

参数

LUID

指定要显示的登陆会话的局部唯一标识符(LUID)。 如果LUID为0,则显示所有登陆会话的信息。

要在check版中显示系统会话和所有系统令牌(system token),输入!logonsession 3e7 1

InfoLevel

(仅Checked Build) 指定要显示多少令牌信息(token information)。InfoLevel 参数可以是0到4之间的值,0表示最少的信息,4表示最多。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

注释

下面是该扩展命令在free build上的输出示例:

kd> !logonsession 0

Dumping all logon sessions.

** Session   0 = 0x0
   LogonId     = {0x0 0x0}
   References  = 0
** Session   1 = 0x8ebb50
   LogonId     = {0xe9f1 0x0}
   References  = 21
** Session   2 = 0x6e31e0
   LogonId     = {0x94d1 0x0}
   References  = 1
** Session   3 = 0x8ecd60
   LogonId     = {0x6b31 0x0}
   References  = 0
** Session   4 = 0xe0000106
   LogonId     = {0x0 0x0}
   References  = 0
** Session   5 = 0x0
   LogonId     = {0x0 0x0}
   References  = 0
** Session   6 = 0x8e9720
   LogonId     = {0x3e4 0x0}
   References  = 6
** Session   7 = 0xe0000106
   LogonId     = {0x0 0x0}
   References  = 0
** Session   8 = 0xa2e160
   LogonId     = {0x3e5 0x0}
   References  = 3
** Session   9 = 0xe0000106
   LogonId     = {0x0 0x0}
   References  = 0
** Session  10 = 0x3ca0
   LogonId     = {0x3e6 0x0}
   References  = 2
** Session  11 = 0xe0000106
   LogonId     = {0x0 0x0}
   References  = 0
** Session  12 = 0x1cd0
   LogonId     = {0x3e7 0x0}
   References  = 33
** Session  13 = 0xe0000106
   LogonId     = {0x0 0x0}
   References  = 0
14 sessions in the system.

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

附加信息

关于登陆会话的信息,查看Microsoft Windows SDK 文档和Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!lookaside

!lookaside 扩展可以显示look-aside lists的信息、重置look-aside list的计数器、或者改变look-aside list的深度。

语法

!lookaside [Address [Options [Depth]]] 

参数

Address

指定要使用的look-aside lists的16进制地址。如果Address为0或者省略,则显示所有的系统look-aside list。

Options

控制要进行的操作。支持下面这些可能的Options 。默认值为0:

0

显示指定的look-aside list 的信息。 (如果Address为0,则显示所有系统look-aside list。)

1

重置指定look-aside list的计数器。(仅Windows NT 4.0:如果Address 为0,则重置所有small pool look-aside list。)

2

改变指定look-aside list 的深度。该选项只有在Address 非0时可以使用。

Depth

设置给定的look-aside list的最大深度。该参数仅在Addres非0,并且Options 等于 2时可用。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

Look-aside list是一种用于管理固定大小的分页或非分页内存池的多处理器安全的机制。

由于在大多数平台上都不使用自旋锁(spin lock),所以look-aside list是高效的。

注意如果look-aside list的当前深度大于它的最大深度,则释放关联到该list的结构时会释放到池内存中,而不是释放到list内存中。

下面是该扩展的输出示例:

kd> !lookaside e0000165f7621800

Lookaside "" @ e0000165f7621800 "Ntfs"
    Type     =     0011 PagedPool RaiseIfAllocationFailure
    Current Depth  =        0   Max Depth  =        4
    Size           =      488   Max Alloc  =     1952
    AllocateMisses =        3   FreeMisses =        0
    TotalAllocates =        4   TotalFrees =        4
    Hit Rate       =       25%  Hit Rate   =      100%

附加信息

关于look-aside list的信息,查看Windows Driver Kit (WDK) 文档,以及 Mark Russinovich 和David Solomon编写的Microsoft Windows Internals

!lpc

!lpc 扩展显示目标系统中的本地过程调用(local procedure call (LPC))端口和信息。

语法

Windows NT 4.0的语法

!lpc 

Windows 2000的语法

!lpc message MessageID 
!lpc port Port 
!lpc scan Port 
!lpc thread Thread 
!lpc 

Windows Server 2003 和Windows XP的语法

!lpc message MessageID 
!lpc port Port 
!lpc scan Port 
!lpc thread Thread 
!lpc PoolSearch 
!lpc 

参数

message

(仅Windows Server 2003、Windows XP、和Windows 2000) 如果有的话,显示某条消息的信息,例如队列中包含该消息的服务器端口(server port)、等待该消息的线程。

MessageID

(仅Windows Server 2003、Windows XP、和Windows 2000) 指定要显示的消息的消息ID。如果该参数的值为0或者省略,!lpc message 命令显示消息的摘要列表。(在Windows 2000 Service Pack 1 (SP1)中,摘要包括LPC zone 的所有消息。在Windows 2000 Service Pack 2 (SP2)、 Windows XP和之后版本的Windows中,摘要包括系统池中的所有消息。已经被页换出得消息不会包含。)

port

(仅Windows Server 2003、Windows XP、和Windows 2000) 显示端口信息,如端口的名字、信号量状态、队列中的消息、裁剪队列(rundown queue)中的线程、句柄数量、引用、以及相关的端口。

scan

(仅Windows Server 2003、Windows XP、和Windows 2000) 显示指定端口以及连接到它的所有端口的摘要信息。

Port

(仅Windows Server 2003、Windows XP、和Windows 2000) 指定要显示的端口的16进制地址。如果使用!lpc port 命令,并且 Port 为0或省略,则显示所由LPC端口的摘要列表。如果使用!lpc scan 命令,Port 必须指定一个实际的端口地址。

thread

(仅Windows Server 2003、Windows XP、和Windows 2000) 显示在rundown port queue中包含指定线程的所有端口的信息。

Thread

(仅Windows Server 2003、Windows XP、和Windows 2000) 指定线程的16进制地址。如果为0或者省略,!lpc thread命令显示所有正在进行LPC操作的线程的摘要列表。

PoolSearch

(仅Windows Server 2003、Windows XP、和Windows 2000) 指定!lpc message命令是否在内核池(kernel pool)中搜索消息。每次使用!lpc PoolSearch时,该设置会在打开和关闭之间切换(初始设置是不搜索内核池)。它仅作用于MessageID指定为非0值的!lpc message命令。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP
Windows Server 2003

Kdexts.dll

注释

该扩展在Windows Vista和之后版本的Windows中不支持。

在Windows NT 4.0,不带参数使用 !lpc 会显示目标机上所有LPC端口和消息,类似在Windows 2000和之后系统中使用!lpc port 然后使用 !lpc message

在Windows Server 2003、Windows XP和Windows 2000中,不带参数使用!lpc 会在调试器命令窗口中显示该扩展命令的帮助文本。

如果有某个线程被标记为在等待某条消息返回,可以使用!lpc message 命令和这条延迟的消息的ID。命令会显示该消息、包含它的端口、以及所有被延迟的线程。

如果找不到消息,并且没有读取错误(例如"Unable to access zone segment"),则服务器已经接收到了这条消息。

这种情况下,服务器端口一般可以通过!lpc thread命令找到。等待响应的线程连接到服务器通信队列(server communication queue)上。这条命令可以显示所有包含指定线程的端口。知道了端口地址之后,可以使用!lpc port 命令。通过使用!lpc thread 命令和线程地址,可以获得关于每条线程的更多信息。

下面是扩展命令在Windows XP系统上的输出示例:

这个例子中,显示了所有LPC端口。

kd> !lpc port
Scanning 225 objects
       1  Port: 0xe1405650 Connection: 0xe1405650  Communication: 0x00000000  'SeRmCommandPort' 
       1  Port: 0xe141ef50 Connection: 0xe141ef50  Communication: 0x00000000  'SmApiPort' 
       1  Port: 0xe13c5740 Connection: 0xe13c5740  Communication: 0x00000000  'ApiPort' 
       1  Port: 0xe13d9550 Connection: 0xe13d9550  Communication: 0x00000000  'SbApiPort' 
       3  Port: 0xe13d8830 Connection: 0xe141ef50  Communication: 0xe13d8910  '' 
80000004  Port: 0xe13d8910 Connection: 0xe141ef50  Communication: 0xe13d8830  '' 
       3  Port: 0xe13d8750 Connection: 0xe13d9550  Communication: 0xe13a4030  '' 
       .....

上面例子中,地址e14ae238 处的端口没有消息,即所有消息都已经被接收并且没有新消息到达。

kd> !lpc port e14ae238

Server connection port e14ae238  Name: ApiPort
    Handles: 1   References: 107
    Server process  : 84aa0140 (csrss.exe)
    Queue semaphore : 84a96da8
    Semaphore state 0 (0x0)
    The message queue is empty
    The LpcDataInfoChainHead queue is empty

上面例子中,0xe14ae238 处的端口有已排队但是还没有被服务器接收的消息。

kd> !lpc port 0xe14ae238

Server connection port e14ae238  Name: ApiPort
    Handles: 1   References: 108
    Server process  : 84aa0140 (csrss.exe)
    Queue semaphore : 84a96da8
    Semaphore state 0 (0x0)
        Messages in queue:
        0000 e20d9b80 - Busy  Id=0002249c  From: 0584.0680  Context=00000021  [e14ae248 . e14ae248]
                   Length=0098007c  Type=00000001 (LPC_REQUEST)
                   Data: 00000000 0002021e 00000584 00000680 002f0001 00000007
    The message queue contains 1 messages
    The LpcDataInfoChainHead queue is empty

剩下的这些Windows XP上的示例是关于可以在这条扩展命令中使用的其它选项的。

kd> !lpc message 222be
Searching message 222be in threads ...
Client thread 842a4db0 waiting a reply from 222be
Searching thread 842a4db0 in port rundown queues ...

Server communication port 0xe114a3c0
    Handles: 1   References: 1
    The LpcDataInfoChainHead queue is empty
        Connected port: 0xe1e7b948      Server connection port: 0xe14ae238

Client communication port 0xe1e7b948
    Handles: 1   References: 3
    The LpcDataInfoChainHead queue is empty

Server connection port e14ae238  Name: ApiPort
    Handles: 1   References: 107
    Server process  : 84aa0140 (csrss.exe)
    Queue semaphore : 84a96da8
    Semaphore state 0 (0x0)
    The message queue is empty
    The LpcDataInfoChainHead queue is empty
Done.

kd> !lpc thread 842a4db0
Searching thread 842a4db0 in port rundown queues ...

Server communication port 0xe114a3c0
    Handles: 1   References: 1
    The LpcDataInfoChainHead queue is empty
        Connected port: 0xe1e7b948      Server connection port: 0xe14ae238

Client communication port 0xe1e7b948
    Handles: 1   References: 3
    The LpcDataInfoChainHead queue is empty

Server connection port e14ae238  Name: ApiPort
    Handles: 1   References: 107
    Server process  : 84aa0140 (csrss.exe)
    Queue semaphore : 84a96da8
    Semaphore state 0 (0x0)
    The message queue is empty
    The LpcDataInfoChainHead queue is empty

kd> !lpc scan e13d8830
Scanning 225 objects
       3  Port: 0xe13d8830 Connection: 0xe141ef50  Communication: 0xe13d8910  '' 
80000004  Port: 0xe13d8910 Connection: 0xe141ef50  Communication: 0xe13d8830  '' 
Scanning 3 objects

下面是在Windows NT 4.0系统上的输出示例:

kd> !lpc
Scanning 2 objects of type 'Port'
Connection Port Object at e11b8bc0 - Name='\SmApiPort' created by smss.exe
Connection Port Object at e11ba040 - Name='\SeRmCommandPort' created by System

附加信息

关于LPC的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

posted @ 2008-07-24 14:43 NetRoc 阅读(845) | 评论 (1)编辑 收藏

WinDbg 文档翻译----79

cc682/NetRoc

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

!gbl

!gbl 扩展显示目标机的ACPI BIOS 根系统描述表(ACPI BIOS Root System Description (RSDT) table)的头信息。

语法

!gbl [-v]

参数

-v

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

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

 

附加信息

关于ACPI和ACPI表的更多信息,查看其他ACPI调试扩展以及 ACPI Specification站点。也可以查看Microsoft Windows SDK文档、Windows Driver Kit (WDK)文档、以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!gentable

!gentable 扩展显示某个RTL_GENERIC_TABLE 。

语法

Windows 2000中的语法

!gentable Address 

Windows XP和之后的语法

!gentable Address [Flag

参数

Address

指定RTL_GENERIC_TABLE的地址。

Flag

(Windows XP 和之后) 指定表的来源。如果Flag 是1,则使用AVL表,如果Flag 为0或者省略,则使用non-AVL 表。在Windows 2000中,总是使用non-AVL表。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

!hidppd

!hidppd 扩展显示HIDP_PREPARSED_DATA 结构的内容。

语法

!hidppd Address 

参数

Address

指定HIDP_PREPARSED_DATA 结构的16进制地址。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

附加信息

关于human input devices (HID)的信息,查看Windows Driver Kit (WDK) 文档。

!ib, !id, !iw

!ib!id、和 !iw 命令已经废除。使用ib, id, iw (Input from Port)命令替代。

!icpleak

!icpleak 扩展在系统中查找队列中条目个数最大的I/O completion对象。

语法

!icpleak [HandleFlag

参数

HandleFlag

如果设置了该标志,则还会显示拥有该最大的队列条目个数的对象句柄的所有进程。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

注释

该扩展在I/O completion池存在泄漏的情况下很有用。I/O completion pool 泄露在进程调用PostQueuedCompletionStatus 分配I/O completion packet,但是又没有调用GetQueuedCompletionStatus 来释放,或者进程将completion entries排队到某个端口,但是又没有任何线程会取出这些entries时就会发生。通过运行!poolused 扩展并且检查ICP pool tag的值来发现泄露。如果有使用ICP tag的池(pool),那么就可能发生了泄露。

该扩展只有在系统维护了类型列表(type lists)时才能工作。如果设置了HandleFlag并且系统中有很多进程,则可能需要运行很长时间。

可以按下CTRL+BREAK (WinDbg中) 或者CTRL+C (KD中)来中止命令。

附加信息

关于I/O完成端口( I/O completion port)的信息,查看Mark Russinovich 和David Solomon编写的 Microsoft Windows Internals

!idt

!idt 扩展显示指定的中断分配表(interrupt dispatch table (IDT))中的中断服务例程(interrupt service routine (ISR))。

语法

!idt IDT 
!idt [-a
!idt -? 

参数

IDT

指定要显示的IDT。

-a

没有指定IDT 时,会以简短的格式显示目标机上所有处理器的IDT。如果指定了-a ,则显示所有IDT的ISR。

-?

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

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

该扩展命令只能对x64或者x86目标机使用。

注释

下面是该扩展命令的示例:

0: kd> !idt

Dumping IDT:

37:806ba78c hal!PicSpuriousService37
3d:806bbc90 hal!HalpApcInterrupt
41:806bbb04 hal!HalpDispatchInterrupt
50:806ba864 hal!HalpApicRebootService
63:8641376c VIDEOPRT!pVideoPortInterrupt (KINTERRUPT 86413730)
73:862aa044 portcls!CInterruptSyncServiceRoutine (KINTERRUPT 862aa008)
82:86594314 atapi!IdePortInterrupt (KINTERRUPT 865942d8)
83:86591bec SCSIPORT!ScsiPortInterrupt (KINTERRUPT 86591bb0)
92:862b53dc serial!SerialCIsrSw (KINTERRUPT 862b53a0)
93:86435844 i8042prt!I8042KeyboardInterruptService (KINTERRUPT 86435808)
a3:863b366c i8042prt!I8042MouseInterruptService (KINTERRUPT 863b3630)
a4:8636bbec USBPORT!USBPORT_InterruptService (KINTERRUPT 8636bbb0)
b1:86585bec ACPI!ACPIInterruptServiceRoutine (KINTERRUPT 86585bb0)
b2:863c0524 serial!SerialCIsrSw (KINTERRUPT 863c04e8)
b4:86391a54 NDIS!ndisMIsr (KINTERRUPT 86391a18)
         USBPORT!USBPORT_InterruptService (KINTERRUPT 863ae890)
c1:806ba9d0 hal!HalpBroadcastCallService
d1:806b9dd4 hal!HalpClockInterrupt
e1:806baf30 hal!HalpIpiHandler
e3:806baca8 hal!HalpLocalApicErrorService
fd:806bb460 hal!HalpProfileInterrupt

附加信息

关于ISR和IDT的信息,查看Windows Driver Kit (WDK) 文档,以及Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

关于如何显示Itanium目标机上的中断向量表(interrupt vector table),查看!ivt

!ih

!ih 显示指定处理器上的中断历史纪录。

语法

!ih Processor 

参数

Processor

指定某个处理器。如果省略Processor ,则使用当前处理器。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

该命令只能对Itanium目标机使用。

注释

该扩展在不涉及程序计数器符号(program counter symbols)的情况下显示中断历史纪录。要使用程序计数器符号来显示中断历史纪录,使用!ihs扩展。在引导入口选项中添加/configflag=32来启用中断历史纪录。

下面是该命令输出的示例:

kd> !ih
Total # of interruptions = 2093185
Vector              IIP                   IPSR          ExtraField 
        VHPT FAULT  e0000000830d3190      1010092a6018  IFA=      6fc00a0200c 
        VHPT FAULT  e0000000830d33d0      1010092a6018  IFA= 1ffffe00001de2d0 
        VHPT FAULT  e0000000830d33d0      1010092a6018  IFA= 1ffffe01befff338 
        VHPT FAULT  e0000000830d3190      1010092a6018  IFA=      6fc00a0200c 
        VHPT FAULT  e0000000830d33d0      1010092a6018  IFA= 1ffffe00001d9188 
        VHPT FAULT  e0000000830d3880      1010092a6018  IFA= 1ffffe01befff250 
        VHPT FAULT  e0000000830d3fb0      1010092a6018  IFA= e0000165f82dc1c0 
        VHPT FAULT  e000000083063390      1010092a6018  IFA= e0000000fffe0018 
     THREAD SWITCH  e000000085896040  e00000008588c040  OSP= e0000165f82dbd40 
        VHPT FAULT  e00000008329b130      1210092a6018  IFA= e0000165f7edaf30 
        VHPT FAULT  e0000165f7eda640      1210092a6018  IFA= e0000165fff968a9 
    PROCESS SWITCH  e0000000818bbe10  e000000085896040  OSP= e0000165f8281de0 
        VHPT FAULT  e00000008307cfc0      1010092a2018  IFA= e00000008189fe50 
EXTERNAL INTERRUPT  e0000000830623b0      1010092a6018  IVR=               d0 
        VHPT FAULT  e00000008314e310      1010092a2018  IFA= e0000165f88203f0 
        VHPT FAULT  e000000083580760      1010092a2018  IFA= e0000000f00ff3fd 
    PROCESS SWITCH  e00000008558c990  e0000000818bbe10  OSP= e00000008189fe20 
        VHPT FAULT  e00000008307cfc0      1010092a2018  IFA= e0000165f02433f0 
        VHPT FAULT          77cfbda0      1013082a6018  IFA=         77cfbda0 
        VHPT FAULT          77cfbdb0      1213082a6018  IFA=      6fbfee0ff98 
   DATA ACCESS BIT          77b8e150      1213082a6018  IFA=         77c16ab8 
        VHPT FAULT          77ed5d60      1013082a6018  IFA=      6fbfffa6048 
   DATA ACCESS BIT          77ed5d60      1213082a6018  IFA=         77c229c0 
   DATA ACCESS BIT          77b8e1b0      1013082a6018  IFA=         77c1c320 
      USER SYSCALL          77cafa40        10082a6018  Num=               42 
        VHPT FAULT  e00000008344dc20      1010092a6018  IFA= e000010600703784 
...

!ihs

!ihs 扩展使用程序计数器符号(program counter symbols)来显示指定处理器的中断历史纪录。

语法

!ihs Processor 

参数

Processor

指定某个处理器。如果省略Processor ,则使用当前处理器。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Kdexts.dll

该命令只能对Itanium目标机使用。

注释

使用!ih 扩展在不引用程序计数器符号的情况下显示中断历史纪录。在引导入口选项中添加/configflag=32来启用中断历史纪录。

下面是该扩展命令的输出示例:

kd> !ihs
Total # of interruptions = 2093185
Vector              IIP                   IPSR          ExtraField            IIP Symbol
        VHPT FAULT  e0000000830d3190      1010092a6018  IFA=      6fc00a0200c nt!MiAgeAndEstimateAvailableInWorkingSet+0x70
        VHPT FAULT  e0000000830d33d0      1010092a6018  IFA= 1ffffe00001de2d0 nt!MiAgeAndEstimateAvailableInWorkingSet+0x2b0
        VHPT FAULT  e0000000830d33d0      1010092a6018  IFA= 1ffffe01befff338 nt!MiAgeAndEstimateAvailableInWorkingSet+0x2b0
        VHPT FAULT  e0000000830d3190      1010092a6018  IFA=      6fc00a0200c nt!MiAgeAndEstimateAvailableInWorkingSet+0x70
        VHPT FAULT  e0000000830d33d0      1010092a6018  IFA= 1ffffe00001d9188 nt!MiAgeAndEstimateAvailableInWorkingSet+0x2b0
        VHPT FAULT  e0000000830d3880      1010092a6018  IFA= 1ffffe01befff250 nt!MiAgeAndEstimateAvailableInWorkingSet+0x760
        VHPT FAULT  e0000000830d3fb0      1010092a6018  IFA= e0000165f82dc1c0 nt!MiCheckAndSetSystemTrimCriteria+0x190
        VHPT FAULT  e000000083063390      1010092a6018  IFA= e0000000fffe0018 nt!KeQuerySystemTime+0x30
     THREAD SWITCH  e000000085896040  e00000008588c040  OSP= e0000165f82dbd40 
        VHPT FAULT  e00000008329b130      1210092a6018  IFA= e0000165f7edaf30 nt!IopProcessWorkItem+0x30
        VHPT FAULT  e0000165f7eda640      1210092a6018  IFA= e0000165fff968a9 netbios!RunTimerForLana+0x60
    PROCESS SWITCH  e0000000818bbe10  e000000085896040  OSP= e0000165f8281de0 
        VHPT FAULT  e00000008307cfc0      1010092a2018  IFA= e00000008189fe50 nt!SwapFromIdle+0x1e0
EXTERNAL INTERRUPT  e0000000830623b0      1010092a6018  IVR=               d0 nt!Kil_TopOfIdleLoop
        VHPT FAULT  e00000008314e310      1010092a2018  IFA= e0000165f88203f0 nt!KdReceivePacket+0x10
        VHPT FAULT  e000000083580760      1010092a2018  IFA= e0000000f00ff3fd hal!READ_PORT_UCHAR+0x80
    PROCESS SWITCH  e00000008558c990  e0000000818bbe10  OSP= e00000008189fe20 
        VHPT FAULT  e00000008307cfc0      1010092a2018  IFA= e0000165f02433f0 nt!SwapFromIdle+0x1e0
        VHPT FAULT          77cfbda0      1013082a6018  IFA=         77cfbda0 0x0000000077cfbda0
        VHPT FAULT          77cfbdb0      1213082a6018  IFA=      6fbfee0ff98 0x0000000077cfbdb0
   DATA ACCESS BIT          77b8e150      1213082a6018  IFA=         77c16ab8 0x0000000077b8e150
        VHPT FAULT          77ed5d60      1013082a6018  IFA=      6fbfffa6048 0x0000000077ed5d60
   DATA ACCESS BIT          77ed5d60      1213082a6018  IFA=         77c229c0 0x0000000077ed5d60
   DATA ACCESS BIT          77b8e1b0      1013082a6018  IFA=         77c1c320 0x0000000077b8e1b0
      USER SYSCALL          77cafa40        10082a6018  Num=               42 0x0000000077cafa40
        VHPT FAULT  e00000008344dc20      1010092a6018  IFA= e000010600703784 nt!ExpLookupHandleTableEntry+0x20
...

!ioresdes

!ioresdes 扩展显示指定地址处的IO_RESOURCE_DESCRIPTOR结构。

语法

!ioresdes Address 

参数

Address

指定IO_RESOURCE_DESCRIPTOR 结构的16进制地址。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

附加信息

查看Plug and Play调试获得该扩展命令的应用。关于IO_RESOURCE_DESCRIPTOR结构的信息,查看 Windows Driver Kit (WDK) 文档。

!ioreslist

!ioreslist 扩展显示一个IO_RESOURCE_REQUIREMENTS_LIST结构。

语法

!ioreslist Address 

参数

Address

指定IO_RESOURCE_REQUIREMENTS_LIST 结构的16进制地址。

DLL

Windows NT 4.0

不可用

Windows 2000

Kdextx86.dll

Windows XP和之后

Kdexts.dll

注释

下面是该扩展输出的示例:

kd> !ioreslist 0xe122b768

IoResList at 0xe122b768 : Interface 0x5  Bus 0  Slot 0xe
  Alternative 0 (Version 1.1)
    Preferred Descriptor 0 - Port (0x1) Device Exclusive (0x1)
      Flags (0x01) - PORT_IO
      0x000100 byte range with alignment 0x000100
      1000 - 0x10ff
    Alternative Descriptor 1 - Port (0x1) Device Exclusive (0x1)
      Flags (0x01) - PORT_IO
      0x000100 byte range with alignment 0x000100
      0 - 0xffffffff
    Descriptor 2 - DevicePrivate (0x81) Device Exclusive (0x1)
      Flags (0000) -
      Data:              : 0x1 0x0 0x0
    Preferred Descriptor 3 - Memory (0x3) Device Exclusive (0x1)
      Flags (0000) - READ_WRITE
      0x001000 byte range with alignment 0x001000
      40080000 - 0x40080fff
    Alternative Descriptor 4 - Memory (0x3) Device Exclusive (0x1)
      Flags (0000) - READ_WRITE
      0x001000 byte range with alignment 0x001000
      0 - 0xffffffff
    Descriptor 5 - DevicePrivate (0x81) Device Exclusive (0x1)
      Flags (0000) -
      Data:              : 0x1 0x1 0x0
    Descriptor 6 - Interrupt (0x2) Shared (0x3)
      Flags (0000) - LEVEL_SENSITIVE
      0xb - 0xb

IO_RESOURCE_REQUIREMENTS_LIST包含这些信息:

  • 资源类型

有四种类型的资源: I/O、内存、IRQ、DMA。

  • 描述符(Descriptor)

每个首选设置都有一个"Preferred" 描述符和数个"Alternative"描述符。

资源列表包含下面这些需求:

  • I/O 范围

申请了0x1000 到0x10FF 的范围,但是只要按0x100对齐的话,可以使用从0到0xFFFFFFFF 之间任何0x100 长度的范围,(例如,可以访问0x1100 到0x11FF。)

  • 内存

申请了0x40080000 到0x40080FFF的范围,但是可以使用0到0xFFFFFFFF 之间以0x1000对齐的任何大小为0x1000的范围。

  • IRQ

必须使用 IRQ 0xB。

中断和DMA通道是以开始和结束相同的区域的形式。

附加信息

查看Plug and Play 调试获得该扩展命令的应用。IO_RESOURCE_REQUIREMENTS_LIST结构的信息,查看Windows Driver Kit (WDK)文档。

posted @ 2008-07-22 13:57 NetRoc 阅读(709) | 评论 (0)编辑 收藏

WinDbg 文档翻译----80

     摘要: cc682/NetRoc http://netroc682.spaces.live.com/ !iovirp !iovirp 扩展显示指定的I/O Verifier IRP 的详细信息。 语法 !iovirp [IRP]  参数 IRP 指定被驱动程序验证器(Driver Verifier)跟踪的IRP的地址。如果IRP 为0或省略,则显示每个未完...  阅读全文

posted @ 2008-07-22 13:57 NetRoc 阅读(1860) | 评论 (0)编辑 收藏

WinDbg 文档翻译----78

     摘要: cc682/NetRoc http://netroc682.spaces.live.com/ !eb, !ed !eb 和!ed 扩展向指定的物理地址写入一系列值。 这些命令不能和e* (Enter Values) 命令混淆。 语法 !eb [Flag] PhysicalAddress Data [ ...&nbs...  阅读全文

posted @ 2008-07-21 11:12 NetRoc 阅读(922) | 评论 (0)编辑 收藏

WinDbg 文档翻译----76

     摘要: cc682/NetRoc http://netroc682.spaces.live.com/ !ca !ca 扩展命令显示指定的节(section)的控制域(control area)。 语法 !ca Address  参数 Address 指定节的16进制地址。 DLL ...  阅读全文

posted @ 2008-07-20 14:27 NetRoc 阅读(905) | 评论 (0)编辑 收藏

WinDbg 文档翻译----77

     摘要: cc682/NetRoc http://netroc682.spaces.live.com/ !defwrites !defwrites 扩展显示缓存管理器(cache manager)使用到的内核变量的值。 语法 !defwrites  DLL ...  阅读全文

posted @ 2008-07-20 14:27 NetRoc 阅读(770) | 评论 (0)编辑 收藏

WinDbg 文档翻译----75

     摘要: cc682/NetRoc http://netroc682.spaces.live.com/ 内核模式扩展 本参考节主要描述主要在内核模式调试时使用的扩展命令。 调试器会自动加载这些扩展命令的适当版本。如果没有自己加载不同的版本,则不需要了解究竟使用的是哪个DLL版本。查看使用调试器扩展命令获得默认的模块搜索顺序的说明。查看 加载调试器扩展DLL获得如何加载扩展模块的说明。 每...  阅读全文

posted @ 2008-07-17 12:07 NetRoc 阅读(505) | 评论 (1)编辑 收藏

WinDbg 文档翻译----73

cc682/NetRoc

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

!mui

!mui 扩展命令显示多语言用户接口(Multilingual User Interface (MUI))缓存信息。MUI的实现在Windows Vista中被显著的改良了。所以该功能在早期的实现上可能是不明确的。

语法

用户模式语法

!mui –c
!mui –f
!mui -i
!mui -r ModuleAddress
!mui -t
!mui -? 

内核模式语法

!mui -c
!mui –f
!mui -i
!mui -s
!mui -r ModuleAddress
!mui -t
!mui -? 

参数

-c

输出中包含语言标识符(language identifier (ID))、指向模块的指针、指向资源配置数据(resource configuration data)的指针、以及指向每个模块关联的MUI DLL的指针。

-f

输出中包含加载器合并的语言后备列表(loader merged language fallback list)。

-i

输出中包含已安装和授权的MUI语言,以及它们的关联信息。

-r ModuleAddress

显示ModuleAddress 模块的资源配置数据(resource configuration data)。包括文件类型、校验和的值、以及资源类型。

-s

(仅内核模式) 输出中包含模块和每个模块关联的MUI DLL的完整路径。

-t

输出中包含线程的首选语言(preference language)。

-?

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

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP

不可用

Windows Vista 和之后

Exts.dll

 

附加信息

关于MUI和资源配置数据格式(resource configuration data format)的更多信息,查看Microsoft Windows SDK 文档。

!net_send

!net_send 扩展通过本地网络发送一条消息。

语法

!net_send SendingMachine TargetMachine Sender Message 

参数

SendingMachine

指定要处理该命令的计算机。建议使用调试器所运行的计算机的名字,因为网络配置可能会拒绝发送这条消息。SendingMachine 不能在开头包括反斜线(\\)。

TargetMachine

指定发送消息的对象。TargetMachine 不能在开头包含反斜线(\\)。

Sender

指定消息的发送者。建议SenderSendingMachine 一样,因为网络配置可能会拒绝发送该消息。当这条消息被显示出来时,该字符串会作为消息的发送者。

Message

指定消息本身。Sender 参数后面的所有文本都会被当作Message 的一部分,包括空格和引号,分号会结束Message并且开始一条新的命令。

DLL

Windows NT 4.0

Ext.dll

Windows 2000

Ext.dll

Windows XP和之后

Ext.dll

!obja

!obja 扩展命令显示对象管理器中某个对象的属性。

语法

!obja Address 

参数

Address

指定要查看的对象头的16进制地址。

DLL

Windows NT 4.0

Ext.dll
Kdextx86.dll

Windows 2000

Ext.dll
Kdextx86.dll

Windows XP和之后

Ext.dll

注释

指定对象所具备的属性会被列举出来。合法的属性包括:

#define OBJ_INHERIT             0x00000002L
#define OBJ_PERMANENT           0x00000010L
#define OBJ_EXCLUSIVE           0x00000020L
#define OBJ_CASE_INSENSITIVE    0x00000040L
#define OBJ_OPENIF              0x00000080L
#define OBJ_OPENLINK            0x00000100L
#define OBJ_VALID_ATTRIBUTES    0x000001F2L

下面是一个示例:

kd> !obja 80967768
Obja +80967768 at 80967768:
        OBJ_INHERIT
        OBJ_PERMANENT
        OBJ_EXCLUSIVE

附加信息

关于对象和对象管理器的更多信息,查看Microsoft Windows SDK 文档、Windows Driver Kit (WDK) 文档、以及Mark Russinovich 和David Solomon 编著的Microsoft Windows Internals

!owner

!owner 扩展用于显示某个模块或者函数的所有者。

语法

!owner [Module[!Symbol]] 

参数

Module

指定要查看所有者的模块。Module 后面如果带一个星号(*),则表示任意多个其他字符。

Symbol

指定要查看所有者的Module 模块中的符号。Symbol 后如果带一个星号 (*) ,表示任意多个其他字符。如果省略Symbol ,则显示整个模块的所有者。

DLL

Windows NT 4.0

Ext.dll

Windows 2000

Ext.dll

Windows XP和之后

Ext.dll

注释

如果没有使用参数并且发生了错误,!owner 会显示发生错误的模块或函数的所有者名字。

传递了模块或函数名给!owner 时,调试器会显示单词 Followup ,后面跟指定的模块或函数的所有者。

要该命令显示有用的信息,必须首先创建包含模块和函数所有者名字的triage.ini 文件。

triage.ini 文件的详细信息和!owner 命令的示例,查看指定模块和函数的所有者

!peb

!peb 扩展显示进程环境块(PEB)信息的格式化形式。

语法

!peb [PEB-Address

参数

PEB-Address

要查看的PEB的16进制地址。(不是从进程的内核进程块中获得的PEB地址。) 如果在用户模式下省略PEB-Address,则使用当前进程的PEB。如果在内核模式下省略,则显示当前进程上下文对应的PEB。

DLL

Windows NT 4.0

Kdextx86.dll
Ntsdexts.dll

Windows 2000

Kdextx86.dll
Ntsdexts.dll

Windows XP和之后

Exts.dll

注释

PEB是Microsoft Windows进程控制结构的用户模式部分。

如果内核模式下不带参数使用!peb 命令时出错,则需要用!process扩展命令来 获得需要的进程的PEB地址。 要确认进程上下文是设置成需要的进程的,并且将该PEB地址作为!peb的参数。

具体显示出来的输出根据不同的Windows版本以及是在内核模式还是用户模式下调试会有所不同。下面是一个附加到Windows Server 2003目标机上的内核调试器的输出示例:

kd> !peb
PEB at 7ffdf000
    InheritedAddressSpace:    No
    ReadImageFileExecOptions: No
    BeingDebugged:            No
    ImageBaseAddress:         4ad00000
    Ldr                       77fbe900
    Ldr.Initialized:          Yes
    Ldr.InInitializationOrderModuleList: 00241ef8 . 00242360
    Ldr.InLoadOrderModuleList:           00241e90 . 00242350
    Ldr.InMemoryOrderModuleList:         00241e98 . 00242358
            Base TimeStamp                     Module
        4ad00000 3d34633c Jul 16 11:17:32 2002 D:\WINDOWS\system32\cmd.exe
        77f40000 3d346214 Jul 16 11:12:36 2002 D:\WINDOWS\system32\ntdll.dll
        77e50000 3d3484ef Jul 16 13:41:19 2002 D:\WINDOWS\system32\kernel32.dll
....
    SubSystemData:     00000000
    ProcessHeap:       00140000
    ProcessParameters: 00020000
    WindowTitle:  'D:\Documents and Settings\Administrator\Desktop\Debuggers.lnk'
    ImageFile:    'D:\WINDOWS\system32\cmd.exe'
    CommandLine:  '"D:\WINDOWS\system32\cmd.exe" '
    DllPath:      'D:\WINDOWS\system32;D:\WINDOWS\system32;....
    Environment:  00010000
        ALLUSERSPROFILE=D:\Documents and Settings\All Users
        APPDATA=D:\Documents and Settings\UserTwo\Application Data
        CLIENTNAME=Console
....
        windir=D:\WINDOWS

类似的!teb 扩展命令用于显示线程环境块。

附加信息

关于进程环境块的更多信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!psr

!psr 扩展显示Itanium处理器状态字(processor status word (PSR))。

语法

!psr PSR [DisplayLevel
!psr @ipsr [DisplayLevel

参数

PSR

指定要显示的PSR的16进制地址。

@ipsr

显示ipsr寄存器。

DisplayLevel

可以使下面选项中任意一个:

0

只显示每个PSR字段(field)的值。这是默认情况。

1

显示中包含非保留或者忽略的PSR字段的更深入的信息。

2

显示中包含所有的PSR字段的深入信息,包括忽略和保留(ignored or reserved)的那些。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Exts.dll

该命令只能在Itanium的目标机上使用。

注释

下面是两个例子:

0:000> !psr @ipsr
psr:ia bn ed ri ss dd da id it mc is cpl rt tb lp db
 0  1  0  0  0  0  0  0  1  0  0  3   1  0  0  0
si di pp sp dfh dfl dt pk i ic | mfh mfl ac up be
 0  0  1  0  0   0   1  0 1  1 |  0   1   0  0  0

kd> !psr @ipsr 1

  be : 0 : Big-Endian
  up : 0 : User Performance monitor enable
  ac : 1 : Alignment Check
 mfl : 1 : Lower floating-point registers written
 mfh : 0 : Upper floating-point registers written
  ic : 1 : Interruption Collection
   i : 0 : Interrupt enable
  pk : 0 : Protection Key enable
  dt : 1 : Data Address Translation enable
 dfl : 0 : Disabled Floating-point Low  register set
 dfh : 1 : Disabled Floating-point High register set
  sp : 0 : Secure Performance monitors
  pp : 1 : Privileged Performance monitor enable
  di : 0 : Disable Instruction set transition
  si : 0 : Secure Interval timer
  db : 0 : Debug Breakpoint fault enable
  lp : 0 : Lower Privilege transfer trap enable
  tb : 0 : Taken Branch trap enable
  rt : 1 : Register stack translation enable
 cpl : 0 : Current Privilege Level
  is : 0 : Instruction Set
  mc : 0 : Machine Abort Mask delivery disable
  it : 1 : Instruction address Translation enable
  id : 0 : Instruction Debug fault disable
  da : 0 : Disable Data Access and Dirty-bit faults
  dd : 0 : Data Debug fault disable
  ss : 0 : Single Step enable
  ri : 0 : Restart Instruction
  ed : 0 : Exception Deferral
  bn : 1 : register Bank
  ia : 0 : Disable Instruction Access-bit faults

附加信息

更多信息,查看Itanium 架构,或者Intel架构手册。

!rtlavl

!rtlavl 扩展显示某个RTL_AVL_TABLE 结构的条目。

语法

!rtlavl Address [Module!Type]
!rtlavl -?

参数

Address

指定要显示的RTL_AVL_TABLE 的地址。

Module

指定定义该数据结构的模块。

Type

指定数据结构的名字。

-?

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

DLL

Windows NT 4.0

Ext.dll

Windows 2000

Ext.dll

Windows XP和之后

Ext.dll

注释

包含Module!Type 选项会使得列表中每个条目都被当成给定类型的。

任何时候通过按下CTRL+BREAK (WinDbg中) 或者CTRL+C (KD 或CDB中)都可以打断命令的输出。

附加信息

使用!gentable 扩展命令来显示AVL表。

!sd

!sd 显示指定地址处的安全描述符(security descriptor)。

语法

Windows NT 4.0 和Windows 2000中的语法:

!sd Address 

Windows XP和之后的语法:

!sd Address [Flags

参数

Address

指定SECURITY_DESCRIPTOR 结构的16进制地址。

Flags

(Windows XP 和之后) 如果设置为1,则显示更友好的名字。包括安全描述符(security identifier (SID))类型,以及该SID的域(domain)和用户名。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Exts.dll

注释

这里有一个例子:

kd> !sd e1a96a80 1
->Revision: 0x1
->Sbz1    : 0x0
->Control : 0x8004
            SE_DACL_PRESENT
            SE_SELF_RELATIVE
->Owner   : S-1-5-21-518066528-515770016-299552555-2981724 (User: MYDOMAIN\myuser)
->Group   : S-1-5-21-518066528-515770016-299552555-513 (Group: MYDOMAIN\Domain Users)
->Dacl    :
->Dacl    : ->AclRevision: 0x2
->Dacl    : ->Sbz1       : 0x0
->Dacl    : ->AclSize    : 0x40
->Dacl    : ->AceCount   : 0x2
->Dacl    : ->Sbz2       : 0x0
->Dacl    : ->Ace[0]: ->AceType: ACCESS_ALLOWED_ACE_TYPE
->Dacl    : ->Ace[0]: ->AceFlags: 0x0
->Dacl    : ->Ace[0]: ->AceSize: 0x24
->Dacl    : ->Ace[0]: ->Mask : 0x001f0003
->Dacl    : ->Ace[0]: ->SID: S-1-5-21-518066528-515770016-299552555-2981724 (User: MYDOMAIN\myuser)

->Dacl    : ->Ace[1]: ->AceType: ACCESS_ALLOWED_ACE_TYPE
->Dacl    : ->Ace[1]: ->AceFlags: 0x0
->Dacl    : ->Ace[1]: ->AceSize: 0x14
->Dacl    : ->Ace[1]: ->Mask : 0x001f0003
->Dacl    : ->Ace[1]: ->SID: S-1-5-18 (Well Known Group: NT AUTHORITY\SYSTEM)

->Sacl    :  is NULL

附加信息

关于该命令的应用和例子,查看查看对象的ACL。关于安全描述符的更多信息,查看 Microsoft Windows SDK文档、 Windows Driver Kit (WDK)文档、以及Mark Russinovich和David Solomon编写的 Microsoft Windows Internals。还可以参见!sid!acl

!sid

!sid 扩展显示指定地址处的安全描述符 (SID)。

语法

Windows NT 4.0 和Windows 2000的语法:

!sid Address 

Windows XP和之后的系统中的语法:

!sid Address [Flags

参数

Address

指定SID结构的地址。

Flags

(Windows XP和之后) 如果设置为1,则SID类型、域和该SID的用户名都会显示出来。

(Windows XP and later) 如果设置为1,则显示更加友好的名字。包括安全描述符(SID)类型,以及该SID的域(domain)和用户名。

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Exts.dll

注释

这里有两个示例,一个没有显示友好名,一个有显示:

kd> !sid 0xe1bf35b8
SID is: S-1-5-21-518066528-515770016-299552555-513

kd> !sid 0xe1bf35b8 1
SID is: S-1-5-21-518066528-515770016-299552555-513 (Group: MYGROUP\Domain Users)

附加信息

关于SID的更多信息,查看Microsoft Windows SDK 文档、Windows Driver Kit (WDK)文档,或者Mark Russinovich 和David Solomon编写的 Microsoft Windows Internals 。也可以参见!sd!acl

!slist

!slist 扩展显示一个单链表(singly-linked list (SList))。

语法

!slist Address [ Symbol [Offset] ] 
!slist -? 

参数

Address

指定SLIST_HEADER 的地址。

Symbol

指定要用来显示的数据类型。如果指定了Symbol,调试器显示的时候会假定单链表中每个实例具有该数据类型。

Offset

指定单链表指针在该结构中的字节偏移。

-?

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

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Exts.dll

注释

如果知道链接的结构的类型,那么SymbolOffset 参数是非常有用的。要查看区别,这里有两个例子;第一个省略了Symbol Offset 参数,第二个包含了。

0:000> !slist ListHead
SLIST HEADER:
   +0x000 Alignment          : a000a002643e8
   +0x000 Next               : 2643e8
   +0x004 Depth              : a
   +0x006 Sequence           : a

SLIST CONTENTS:
002643e8  002642c0 0000000a 6e676953 72757461
002642c0  00264198 00000009 6e676953 72757461
00264198  00264070 00000008 6e676953 72757461
00264070  00263f48 00000007 6e676953 72757461
00263f48  00261420 00000006 6e676953 72757461
00261420  002612f8 00000005 6e676953 72757461
002612f8  002611d0 00000004 6e676953 72757461
002611d0  002610a8 00000003 6e676953 72757461
002610a8  00260f80 00000002 6e676953 72757461
00260f80  00000000 00000001 6e676953 72757461

0:000> !slist ListHead _PROGRAM_ITEM 0
SLIST HEADER:
   +0x000 Alignment          : a000a002643e8
   +0x000 Next               : 2643e8
   +0x004 Depth              : a
   +0x006 Sequence           : a

SLIST CONTENTS:
002643e8
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 0xa
   +0x008 Description      : [260]  "Signature is: 10"
002642c0
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 9
   +0x008 Description      : [260]  "Signature is: 9"
00264198
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 8
   +0x008 Description      : [260]  "Signature is: 8"
00264070
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 7
   +0x008 Description      : [260]  "Signature is: 7"
00263f48
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 6
   +0x008 Description      : [260]  "Signature is: 6"
00261420
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 5
   +0x008 Description      : [260]  "Signature is: 5"
002612f8
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 4
   +0x008 Description      : [260]  "Signature is: 4"
002611d0
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 3
   +0x008 Description      : [260]  "Signature is: 3"
002610a8
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 2
   +0x008 Description      : [260]  "Signature is: 2"
00260f80
   +0x000 ItemEntry        : _SINGLE_LIST_ENTRY
   +0x004 Signature        : 1
   +0x008 Description      : [260]  "Signature is: 1"

posted @ 2008-07-16 15:09 NetRoc 阅读(377) | 评论 (1)编辑 收藏

WinDbg 文档翻译----74

cc682/NetRoc

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

!std_map

!std_map 扩展用来显示std::map 树的内容。

语法

!std_map Address [Module!Type [TypeSize]]
!std_map -?

参数

Address

指定要显示的std::map 树的地址。

Module

指定定义该数据结构的模块。

Type

指定数据结构的名字。必须是明确的Module!std::pair<Type1,Type2> 格式。如果使用了TypeSize参数,则这个参数必须包含在引号中。

TypeSize

指定数据结构的大小,以使得符号更加明确。

-?

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

DLL

Windows NT 4.0

Ext.dll

Windows 2000

Ext.dll

Windows XP和之后

Ext.dll

注释

包含Module!Type 选项使得表中的每个条目都被当作给定类型。

使用dt -ve (Module!std::pair<Type1,Type2>) 来显示可能的大小。

附加信息

要显示其它标准模板库 (STL)定义的模板,查看 !stl

!stl

!stl 扩展命令显示一些已知的标准模板库(STL)的模板。

语法

!stl [OptionsTemplate 
!stl -? 

参数

Options

可以包含任意的下面这些选项:

-v

显示详细输出。

-V

显示更加详细的输出,例如包含特定函数何时被调用以及何时返回这样的扩展命令执行过程的信息。

Template

指定要显示的模板的名字。

-?

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

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Exts.dll

注释

只有在调试器的详细输出模式打开之后,详细输出的选项才能起作用。

该扩展命令当前支持的STL模板包括:stringwstringvector<string>vector<wstring>list<string>list<wstring>、以及任何指向前面这几个类型的指针。

!str

!str 扩展命令显示ANSI_STRING 或OEM_STRING 结构。

语法

!str Address 

参数

Address

指定ANSI_STRING 或OEM_STRING 结构的16进制地址。

DLL

Windows NT 4.0

Ext.dll

Windows 2000

Ext.dll

Windows XP和之后

Ext.dll

注释

ANSI 字符串包含的是8位的字符,用下面的结构定义:

typedef struct _STRING {
    USHORT Length;
    USHORT MaximumLength;
    PCHAR Buffer;
} STRING;
typedef STRING ANSI_STRING;
typedef STRING OEM_STRING;

如果字符串是NULL结尾的,Length 不能包含尾部的NULL。

附加信息

关于ANSI_STRING 结构的更多信息,查看Microsoft Windows SDK文档。

!sym

!sym 扩展控制显示详细的符号加载和符号提示。

语法

!sym 
!sym noisy 
!sym quiet 
!sym prompts 
!sym prompts off 

参数

noisy

激活详细符号加载(noisy symbol loading)。

quiet

禁止详细符号加载。

prompts

当SymSrv 接收到认证请求时,允许弹出对话框。

prompts off

禁止SymSrv 在接收到认证请求时显示认证对话框。这可能使得SymSrv 不能通过internet访问符号。

DLL

Windows NT 4.0

Dbghelp.dll

Windows 2000

Dbghelp.dll

Windows XP和之后

Dbghelp.dll

注释

如果不带参数使用!sym ,则显示当前的详细符号加载和符号提示的设置状态。

!sym noisy!sym quiet 扩展命令用来控制详细符号加载。关于其它显示和修改该选项的方法,查看SYMOPT_DEBUG

!sym prompts!sym prompts off 扩展用来控制SymSrv接收到认证请求时是否弹出认证对话框。这些命令之后必须再使用.reload (Reload Module) 才能起效。认证请求可能是由代理服务器、internet防火墙、智能卡读卡器(smart card readers),以及安全页面(secure websites)发起的。关于其它显示和修改该选项的方法,查看防火墙和代理服务器

注意  详细符号加载不能和详细源码加载混淆 — 它是使用.srcnoisy (Noisy Source Loading) 命令来控制的。

!symsrv

!symsrv 命令关闭符号服务器客户端(symbol server client)。

语法

!symsrv close 

DLL

Windows NT 4.0

Dbghelp.dll

Windows 2000

Dbghelp.dll

Windows XP和之后

Dbghelp.dll

注释

!symsrv close 会关闭任何活动的符号服务器客户端。

这在重新同步连接时有用。

如果之前拒绝过internet的认证请求,需要使用!symsrv close来重新连接符号存储。查看 防火墙和代理服务器获得详细信息。

!teb

!teb 扩展以的格式化后的形式显示线程环境块(TEB)的信息。

语法

!teb [TEB-Address

参数

TEB-Address

要查看的TEB 的16进制地址。(这不是从该线程在内核的线程块中获得的TEB。) 如果在用户模式下省略TEB-Address,则使用当前进程的TEB。如果在内核模式下省略,则显示当前寄存器上下文对应的TEB。

DLL

Windows NT 4.0

Kdextx86.dll
Ntsdexts.dll

Windows 2000

Kdextx86.dll
Ntsdexts.dll

Windows XP和之后

Exts.dll

注释

TEB是用户模式下的Microsoft Windows线程控制结构。

如果在内核模式下不带参数使用 !teb 出现错误,则应该用!process扩展来查看需要的线程的TEB地址。确认寄存器上下文是设置成需要的线程的,然后再将该TEB地址用作!teb 的参数。

下面是在用户模式下使用该命令的一个例子:

0:001> ~
   0  id: 324.458   Suspend: 1 Teb 7ffde000 Unfrozen
.  1  id: 324.48c   Suspend: 1 Teb 7ffdd000 Unfrozen

0:001> !teb 
TEB at 7FFDD000
    ExceptionList:    76ffdc
    Stack Base:       770000
    Stack Limit:      76f000
    SubSystemTib:     0
    FiberData:        1e00
    ArbitraryUser:    0
    Self:             7ffdd000
    EnvironmentPtr:   0
    ClientId:         324.48c
    Real ClientId:    324.48c
    RpcHandle:        0
    Tls Storage:      0
    PEB Address:      7ffdf000
    LastErrorValue:   0
    LastStatusValue:  0
    Count Owned Locks:0
    HardErrorsMode:   0

类似的 !peb 扩展命令用于显示进程环境块。

附加信息

关于线程环境块的更多信息,查看Mark Russinovich 和David Solomon 编著的Microsoft Windows Internals

!tls

!tls 扩展命令用于显示一个线程本地存储槽(TLS slot)。

语法

!tls Slot [TEB

参数

Slot

指定TLS slot。可以是0到1088之间的任何10进制值。如果Slot 是-1,则显示所有slot。

TEB

指定线程环境块(TEB)。如果为0或者省略,则使用当前线程。

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Exts.dll

注释

这里有一个例子:

0:000> !tls -1
TLS slots on thread: c08.f54
0x0000 : 00000000
0x0001 : 003967b8
0:000> !tls 0
c08.f54: 00000000

!token

!token 扩展命令用来显示格式化后的安全令牌对象(security token object)的信息。

语法

Windows NT 4.0 和Windows 2000的语法 (内核模式)

!token [Address

Windows XP和之后系统中,内核模式:

!token [-n] [Address
!token -? 

Windows XP和之后系统,用户模式:

!token [-n] [Handle
!token -? 

参数

Address

(仅内核模式) 指定要显示的令牌的地址。如果为0 或省略,则显示活动线程的令牌。

Handle

(仅用户模式) 指定要显示的令牌的句柄。如果为0或者省略,则显示目标进程关联的令牌。

-n

(Windows XP 和之后;仅用户模式) 显示更加友好的名字。包括安全描述符(SID)类型,以及SID的域和用户名。该选项在调试LSASS时不能使用。

-?

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

DLL

Windows NT 4.0

Kdextx86.dll

Windows 2000

Kdextx86.dll

Windows XP和之后

Exts.dll

在Windows NT 4.0 和Windows 2000中, !token仅在内核调试时可用。在Windows XP和之后的操作系统中, !token 可以在内核调试和用户模式活动调试时使用。调试用户模式dump文件时不能使用。

注释

TOKEN 结构用来代表一个已认证的用户进程的安全对象类型。每个进程都被指派了一个令牌,作为该进程中所有线程的默认令牌。但是每个单独线程都可以指派一个令牌来重载默认的那个。

可以从!process的输出中得到令牌的地址。要显示TOKEN结构的每个单独字段的清单,可以在Windows NT 4.0或者Windows 2000中使用 !tokenfields 扩展命令,或者在Windows XP或之后的系统中使用 dt nt!_TOKEN 命令。

下面是一个例子:

kd> !process 81464da8 1
PROCESS 81464da8  SessionId: 0  Cid: 03bc    Peb: 7ffdf000  ParentCid: 0124
    DirBase: 0dec2000  ObjectTable: e1a31198  TableSize: 275.
    Image: MSMSGS.EXE
    VadRoot 81468cc0 Vads 170 Clone 0 Private 455. Modified 413. Locked 0.
    DeviceMap e1958438
    Token                             e1bed030
    ElapsedTime                       0:44:15.0142
    UserTime                          0:00:00.0290
    KernelTime                        0:00:00.0300
    QuotaPoolUsage[PagedPool]         49552
    QuotaPoolUsage[NonPagedPool]      10872
    Working Set Sizes (now,min,max)  (781, 50, 345) (3124KB, 200KB, 1380KB)
    PeakWorkingSetSize                1550
    VirtualSize                       57 Mb
    PeakVirtualSize                   57 Mb
    PageFaultCount                    2481
    MemoryPriority                    BACKGROUND
    BasePriority                      8
    CommitCharge                      2497
kd> !exts.token -n e1bed030
_TOKEN e1bed030
TS Session ID: 0
User: S-1-5-21-518066528-515770016-299552555-2981724 (User: MYDOMAIN\myuser)
Groups:
 00 S-1-5-21-518066528-515770016-299552555-513 (Group: MYDOMAIN\Domain Users)
    Attributes - Mandatory Default Enabled
 01 S-1-1-0 (Well Known Group: localhost\Everyone)
    Attributes - Mandatory Default Enabled
 02 S-1-5-32-544 (Alias: BUILTIN\Administrators)
    Attributes - Mandatory Default Enabled Owner
 03 S-1-5-32-545 (Alias: BUILTIN\Users)
    Attributes - Mandatory Default Enabled
 04 S-1-5-21-518066528-515770016-299552555-2999049 (Group: MYDOMAIN\AllUsers)
    Attributes - Mandatory Default Enabled
 05 S-1-5-21-518066528-515770016-299552555-2931095 (Group: MYDOMAIN\SomeGroup1)
    Attributes - Mandatory Default Enabled
 06 S-1-5-21-518066528-515770016-299552555-2931096 (Group: MYDOMAIN\SomeGroup2)
    Attributes - Mandatory Default Enabled
 07 S-1-5-21-518066528-515770016-299552555-3014318 (Group: MYDOMAIN\SomeGroup3)
    Attributes - Mandatory Default Enabled
 08 S-1-5-21-518066528-515770016-299552555-3053352 (Group: MYDOMAIN\Another Group)
    Attributes - Mandatory Default Enabled
 09 S-1-5-21-518066528-515770016-299552555-2966661 (Group: MYDOMAIN\TestGroup)
    Attributes - Mandatory Default Enabled
 10 S-1-5-21-2117033040-537160606-1609722162-17637 (Group: MYOTHERDOMAIN\someusers)
    Attributes - Mandatory Default Enabled
 11 S-1-5-21-518066528-515770016-299552555-3018354 (Group: MYDOMAIN\TestGroup2)
    Attributes - Mandatory Default Enabled
 12 S-1-5-21-518066528-515770016-299552555-3026602 (Group: MYDOMAIN\SomeGroup4)
    Attributes - Mandatory Default Enabled
 13 S-1-5-21-518066528-515770016-299552555-2926570 (Group: MYDOMAIN\YetAnotherGroup)
    Attributes - Mandatory Default Enabled
 14 S-1-5-21-661411660-2927047998-133698966-513 (Group: MYDOMAIN\Domain Users)
    Attributes - Mandatory Default Enabled
 15 S-1-5-21-518066528-515770016-299552555-2986081 (Alias: MYDOMAIN\an_alias)
    Attributes - Mandatory Default Enabled GroupResource
 16 S-1-5-21-518066528-515770016-299552555-3037986 (Alias: MYDOMAIN\AReallyLongGroupName1)
    Attributes - Mandatory Default Enabled GroupResource
 17 S-1-5-21-518066528-515770016-299552555-3038991 (Alias: MYDOMAIN\AReallyLongGroupName2)
    Attributes - Mandatory Default Enabled GroupResource
 18 S-1-5-21-518066528-515770016-299552555-3037999 (Alias: MYDOMAIN\AReallyLongGroupName3)
    Attributes - Mandatory Default Enabled GroupResource
 19 S-1-5-21-518066528-515770016-299552555-3038983 (Alias: MYDOMAIN\AReallyReallyLongGroupName)
    Attributes - Mandatory Default Enabled GroupResource
 20 S-1-5-5-0-71188 (no name mapped)
    Attributes - Mandatory Default Enabled LogonId
 21 S-1-2-0 (Well Known Group: localhost\LOCAL)
    Attributes - Mandatory Default Enabled
 22 S-1-5-4 (Well Known Group: NT AUTHORITY\INTERACTIVE)
    Attributes - Mandatory Default Enabled
 23 S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users)
    Attributes - Mandatory Default Enabled
Primary Group: S-1-5-21-518066528-515770016-299552555-513 (Group: MYDOMAIN\Domain Users)
Privs:
 00 0x000000017 SeChangeNotifyPrivilege           Attributes - Enabled Default
 01 0x000000008 SeSecurityPrivilege               Attributes -
 02 0x000000011 SeBackupPrivilege                 Attributes -
 03 0x000000012 SeRestorePrivilege                Attributes -
 04 0x00000000c SeSystemtimePrivilege             Attributes -
 05 0x000000013 SeShutdownPrivilege               Attributes -
 06 0x000000018 SeRemoteShutdownPrivilege         Attributes -
 07 0x000000009 SeTakeOwnershipPrivilege          Attributes -
 08 0x000000014 SeDebugPrivilege                  Attributes -
 09 0x000000016 SeSystemEnvironmentPrivilege      Attributes -
 10 0x00000000b SeSystemProfilePrivilege          Attributes -
 11 0x00000000d SeProfileSingleProcessPrivilege   Attributes -
 12 0x00000000e SeIncreaseBasePriorityPrivilege   Attributes -
 13 0x00000000a SeLoadDriverPrivilege             Attributes - Enabled
 14 0x00000000f SeCreatePagefilePrivilege         Attributes -
 15 0x000000005 SeIncreaseQuotaPrivilege          Attributes -
 16 0x000000019 SeUndockPrivilege                 Attributes - Enabled
 17 0x00000001c SeManageVolumePrivilege           Attributes -
Authentication ID:         (0,11691)
Impersonation Level:       Anonymous
TokenType:                 Primary
Source: User32             TokenFlags: 0x9 ( Token in use )
Token ID: 18296            ParentToken ID: 0
Modified ID:               (0, 18298)
RestrictedSidCount: 0      RestrictedSids: 00000000

附加信

关于内核模式TOKEN结构的更多信息,查看Mark Russinovich 和David Solomon编写的Microsoft Windows Internals。用户模式下TOKEN结构的更多信息,查看Microsoft Windows SDK 文档。

!tp

!tp 扩展用于显示线程池的信息。

语法

!tp pool Address [Flags]
!tp tqueue Address [Flags]
!tp ItemType Address [Flags]
!tp ThreadType [Address]
!tp -? 

参数

Address

指定一个地址。

pool

显示位于Address 的整个线程池。如果Address是0,则显示所有的线程池。

tqueue

显示位于Address 的活动定时器队列(active timer queue)。

ItemType

指定要显示的线程池项(item)的类型。ItemType可以包含任意的下面这些可能的值:

obj

显示常规的内存池项 (例如IO项)。

timer

显示定时器项。

wait

显示等待项(wait item)。

work

显示工作项(work item)。

ThreadType

指定要显示的线程的类型。如果包含了Address,则只会显示该地址处的线程。 如果Address 为0,则指定类型的所有线程都会显示出来。如果省略Address,只显示当前线程(疑为进程 — 译者)关联的线程。ThreadType 可以包含任意下面这些可能的值:

waiter

显示线程池等待者线程(thread pool waiter thread)。

worker

显示线程池工作者线程(thread pool worker thread)。

Flags

指定显示中要包含的内容。可以是下面这些位值的和 (默认值为0x0):

Bit 0 (0x1)

单行显示。当显示ItemType 时,这一位的设置无效。

Bit 1 (0x2)

显示中包含成员信息(member information)。

Bit 2 (0x4)

显示中包含池工作队列(pool work queue)。这一位只有使用pool标志时才有意义。

-?

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

DLL

Windows NT 4.0

不可用

Windows 2000

不可用

Windows XP和之后

Exts.dll

附加信息

关于线程池的更多信息,查看Microsoft Windows SDK 文档。

!triage

!triage 扩展命令已经废除。使用!analyze 来替代。

!ustr

!ustr 扩展命令显示UNICODE_STRING结构。

语法

!ustr Address 

参数

Address

指定UNICODE_STRING 结构的16进制地址。

DLL

Windows NT 4.0

Ext.dll

Windows 2000

Ext.dll

Windows XP和之后

Ext.dll

注释

Unicode 字符串是由16位字符组成的,下面是结构的定义:

typedef struct _UNICODE_STRING {
    USHORT Length;
    USHORT MaximumLength;
    PWSTR  Buffer;
} UNICODE_STRING;

如果字符串是NULL结尾,则Length 不能包含NULL字符。

大多数Win32字符串参数在实际使用前都会转换成Unicode字符串。

附加信息

UNICODE_STRING 结构的更多信息,查看Microsoft Windows SDK文档。

!version

!version 扩展命令显示扩展DLL的版本信息。

该命令不能和 version (Show Debugger Version) 命令混淆。

语法

![ExtensionDLL.]version 

参数

ExtensionDLL

指定要显示版本号的扩展DLL。

DLL

大多数扩展DLL都支持该命令。

注释

如果扩展DLL的版本和调试器版本不匹配,则会显示错误信息。

该命令在Windows XP和之后版本的Windows中都不支持。要显示版本信息,应该使用version (Show Debugger Version) 命令。

该扩展命令原本的意图是用来确认DLL版本和目标版本匹配,因为在很多扩展中版本不匹配都会造成错误的结果。新的DLL不再限制为只支持一个版本的Windows,所以这个扩展命令已经废除。

posted @ 2008-07-16 15:09 NetRoc 阅读(713) | 评论 (0)编辑 收藏

仅列出标题
共10页: 1 2 3 4 5 6 7 8 9 Last 

导航

统计

常用链接

留言簿(7)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜