NetRoc's Blog

N-Tech

 

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 on 2008-07-16 15:09 NetRoc 阅读(605) 评论(0)  编辑 收藏 引用

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

导航

统计

常用链接

留言簿(6)

随笔档案(99)

文章分类(35)

文章档案(32)

Friends

Mirror

搜索

最新评论

阅读排行榜

评论排行榜