NetRoc's Blog

N-Tech

 

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 on 2008-07-22 13:57 NetRoc 阅读(585) 评论(0)  编辑 收藏 引用

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

导航

统计

常用链接

留言簿(6)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜