Debugging Tools for Windows

!teb

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

语法

!teb [TEB-Address

参数

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

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

Build machine: CAPEBUILD