青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

windbg 的翻譯文檔

Posted on 2009-03-27 21:37 S.l.e!ep.¢% 閱讀(600) 評論(0)  編輯 收藏 引用 所屬分類: WinDbg

!handle

!handle 擴展顯示目標系統中一個或所有進程擁有的句柄的信息。

語法

用戶模式

!handle?[Handle?[UMFlags?[TypeName]]]?
!handle?-??

內核模式

!handle?[Handle?[KMFlags?[Process?[TypeName]]]]?

參數

Handle

指定要顯示的句柄序號。如果Handle是-1或者省略,調試器顯示當前進程關聯的所有句柄的數據。如果Handle 是0,調試器顯示所有句柄的數據。

UMFlags

(僅用戶模式) 指定顯示中應該包括的內容。該參數可以是任意的下面這些位值的和(默認值為1。)

Bit 0 (0x1)

顯示句柄類型信息。

Bit 1 (0x2)

顯示基本的句柄信息。

Bit 2 (0x4)

顯示句柄名信息。

Bit 3 (0x8)

如果可能的話,顯示對象相關的句柄信息。

KMFlags

(僅內核模式) 指定顯示中應該包含的內容。該參數可以是任意的下面這些位值的和。(默認值是0x3。)

Bit 0 (0x1)

顯示基本句柄信息。

Bit 1 (0x2)

顯示對象的信息。

Bit 2 (0x4)

顯示free handle條目。如果不設置這一位或者Handle省略或為0,則顯示出來的句柄列表不包括free handle。如果Handle指定了單個free handle,則即使沒有設置這一位也會顯示出來。

Bit 4 (0x10)

(Windows?XP 和之后) 顯示內核句柄表中的句柄而不是當前進程的。

Bit 5 (0x20)

(Windows?XP 和之后) 將句柄當作線程ID或進程ID,并且顯示相應的內核對象的信息。

Process

(僅內核模式) 指定一個進程。可以使用進程ID或者進程對象的16進制地址。該參數必須指定目標系統中正在運行的進程。如果設置為-1或者省略,則使用當前進程。

TypeName

指定要確認的句柄類型。只有匹配該類型的句柄才會顯示出來。TypeName 是區分大小寫的。合法的類型有Event、Section、File、Port、Directory、SymbolLink、Mutant、WindowStation、Semaphore、Key、Token、Process 、Thread、Desktop、IoCompletion、Timer、Job和WaitablePort。

-?

(僅用戶模式)調試器命令窗口中顯示該擴展的幫助文本。

DLL

Windows?NT?4.0

Kdextx86.dll
Uext.dll
Ntsdexts.dll

Windows?2000

Kdextx86.dll
Uext.dll
Ntsdexts.dll

Windows?XP 和之后

Kdexts.dll
Uext.dll
Ntsdexts.dll

注釋

可以在用戶模式和內核模式活動調試時使用!handle 擴展。也可以在內核模式dump文件上使用它。但如果創建時沒包含句柄信息,則不能在調試用戶模式dump文件時使用。(可以通過.dump?/mh (Create Dump File)命令來創建這種dump文件。)

用戶模式活動調試時,可以使用.closehandle?(Close Handle) 命令關閉一個或多個句柄。

下面是用戶模式下使用!handle 的示例。這條命令顯示句柄列表。

0:000>?!handle
Handle?4
??Type??????????Section
Handle?8
??Type??????????Event
Handle?c
??Type??????????Event
Handle?10
??Type??????????Event
Handle?14
??Type??????????Directory
Handle?5c
??Type??????????File
6?Handles
Type????????????Count
Event???????????3
Section?????????1
File????????????1
Directory???????1

下面的命令顯示句柄0x8的詳細信息。

0:000>?!handle?8?f
Handle?8
??Type??????????Event
??Attributes????0
??GrantedAccess?0x100003:
?????????Synch
?????????QueryState,ModifyState
??HandleCount???2
??PointerCount??3
??Name??????????<none>
??Object?Specific?Information
????Event?Type?Auto?Reset
????Event?is?Waiting

下面是內核模式下使用!handle的示例。這條命令列舉所有句柄,包括free handle。

kd>?!handle?0?4
processor?number?0
PROCESS?80559800??SessionId:?0??Cid:?0000????Peb:?00000000??ParentCid:?0000
????DirBase:?00039000??ObjectTable:?e1000d60??TableSize:?380.
????Image:?Idle

New?version?of?handle?table?at?e1002000?with?380?Entries?in?use

0000:?free?handle,?Entry?address?e1002000,?Next?Entry?fffffffe
0004:?Object:?80ed5238??GrantedAccess:?001f0fff
0008:?Object:?80ed46b8??GrantedAccess:?00000000
000c:?Object:?e1281d00??GrantedAccess:?000f003f
0010:?Object:?e1013658??GrantedAccess:?00000000
......
0168:?Object:?ffb6c748??GrantedAccess:?00000003?(Protected)
016c:?Object:?ff811f90??GrantedAccess:?0012008b
0170:?free?handle,?Entry?address?e10022e0,?Next?Entry?00000458
0174:?Object:?80dfd5c8??GrantedAccess:?001f01ff
......

下面的命令顯示內核句柄表中的0x14句柄的詳細信息。

kd>?!handle?14?13
processor?number?0
PROCESS?80559800??SessionId:?0??Cid:?0000????Peb:?00000000??ParentCid:?0000
????DirBase:?00039000??ObjectTable:?e1000d60??TableSize:?380.
????Image:?Idle

Kernel?New?version?of?handle?table?at?e1002000?with?380?Entries?in?use
0014:?Object:?e12751d0??GrantedAccess:?0002001f
Object:?e12751d0??Type:?(80ec8db8)?Key
????ObjectHeader:?e12751b8
????????HandleCount:?1??PointerCount:?1
????????Directory?Object:?00000000??Name:?\REGISTRY\MACHINE\SYSTEM\CONTROLSET001\CONTROL\SESSION?MANAGER\EXECUTIVE

附加信息

關于句柄的更多信息,查看!htrace 擴展、Microsoft Windows SDK 文檔,以及Mark Russinovich和David Solomon編寫的Microsoft Windows Internals

!heap

!heap 擴展顯示堆使用信息,控制堆管理器中的斷點,檢測泄露的堆塊,搜索堆塊或者顯示頁堆(page heap)信息。

語法

Windows NT 4.0的語法

!heap?[HeapOptions]?[ValidationOptions]?[Heap]?
!heap?-b?[{alloc|realloc|free}?[Tag]]?[Heap?|?BreakAddress]?
!heap?-B?{alloc|realloc|free}?[Heap?|?BreakAddress]?
!heap?-??

Windows?2000的語法

!heap?[HeapOptions]?[ValidationOptions]?[Heap]?
!heap?-b?[{alloc|realloc|free}?[Tag]]?[Heap?|?BreakAddress]?
!heap?-B?{alloc|realloc|free}?[Heap?|?BreakAddress]?
!heap?-p?PageHeapOptions?
!heap?[-p]?-??

Windows?XP和之后的語法

!heap?[HeapOptions]?[ValidationOptions]?[Heap]?
!heap?-b?[{alloc|realloc|free}?[Tag]]?[Heap?|?BreakAddress]?
!heap?-B?{alloc|realloc|free}?[Heap?|?BreakAddress]?
!heap?-l?
!heap?-s?[SummaryOptions]?[StatHeapAddress]?
!heap?-i?HeapAddress
!heap?-x?[-v]?Address?
!heap?-p?[PageHeapOptions]?
!heap?-srch?[Size]?Pattern
!heap?-flt?FilterOptions
!heap?-stat?[-h?Handle?[-grp?GroupBy?[MaxDisplay]]]
!heap?[-p]?-??

參數

Heap

指定堆序號或者堆的地址。默認值為1,用于指定進程堆。如果指定0,則顯示進程中所有堆的信息。省略Heap 則顯示進程中堆的簡明列表。

HeapOptions

可以使下面這些選項的任意組合。HeapOptions 值區分大小寫。

選項

作用

-v

使得調試器驗證指定的堆。

-a

顯示中包含指定堆的所有信息。這種情況下,大小會被四舍五入到堆的分配粒度。(運行!heap–a 選項相當于使用-h -f –m這三個選項,會需要較長時間。)

-h

輸出中包含指定堆的所有條目。

-f

輸出中包含指定堆的所有空閑列表項(free list entries)。

-m

輸出重包含指定堆的所有段條目(segment entries)。

-t

使得輸出重包含指定堆的標簽信息(tag information)。

-T

輸出中包含指定堆的偽標簽條目(pseudo-tag entries)。

-g

輸出中包括全局標簽信息(global tag information)。全局標簽和每個無標簽的分配(untagged allocation)關聯。

-s

輸出中包含指定堆的摘要信息。

-k

(僅x86目標) 輸出重包含每個條目關聯的堆棧回溯。

-c

(僅Windows NT 4.0) 輸出中包含針對該堆的最近一次API調用。

ValidationOptions

可以是下面這些選項中的一個。ValidationOptions 區分大小寫。

選項

作用

-C

(僅Windows NT 4.0) 對指定的堆進行API調用跟蹤。使用該選項會交替的啟用和禁用這種跟蹤。初始的跟蹤狀態由傳遞給RtlCreateHeap 的標志是否包含HEAP_CREATE_ENABLE_TRACING 決定。該狀態也可以通過全局標志來改變。

-D

禁止指定堆的調用時驗證(validate-on-call)。

-E

啟用指定堆的調用時驗證(validate-on-call)。

-d

禁用指定堆的堆檢查(heap checking)。

-e

啟用指定堆的堆檢查(heap checking)。

BreakAddress

指定要設置或刪除斷點的塊的地址。

-b

使得調試器在堆管理器中設置條件斷點。-b 后可跟allocrealloc或者 free,用于指定斷點是否在分配、重新分配或者釋放內存時激活。如果BreakAddress 用來指定塊的地址,可以省略斷點類型。如果Heap用來指定堆地址或者堆序號,則必須包含類型和Tag參數。

Tag

指定堆中的標簽名。

-B

使得調試器在堆管理器中移除一個條件斷點。必須指定斷點類型(allocreallocfree),并且必須和-b 選項使用的一樣。

-l

(Windows?XP和之后) 使得調試器檢查泄露的堆塊。

-s

(Windows?XP和之后) 指定需要摘要信息。如果省略SummaryOptions StatHeapAddress,則當前進程關聯的所有堆的摘要信息都會顯示出來。

SummaryOptions

(Windows?XP 和之后) 可以是任意下面這些選項。SummaryOptions 不區分大小寫。

選項

作用

-v

驗證所有數據塊。

-b BucketSize

指定存儲單元(bucket)的大小。默認值為1024 bit。

-d DumpBlockSize

指定存儲單元大小。

-a

?

-c

指示每個塊得內容都應該顯示出來。

StatHeapAddress

(Windows?XP和之后) 指定堆的地址。如果為0或者省略,則顯示當前進程關聯的所有堆。

-i Heap

(Windows?XP 和之后) 顯示指定的Heap 的信息。

-x [-v]

(Windows?XP 和之后) 使得調試器搜索包含指定地址的堆塊。如果添加了-v ,命令會在當前進程的整個虛擬內存空間中搜索指向該堆塊的指針。

Address

(Windows?XP 和之后) 指定要搜索的地址。

-p

(Windows?2000 和之后) 指示需要頁堆(page heap)信息。如果沒有和任何PageHeapOptions 一起使用,則所有頁堆都會顯示出來。

PageHeapOptions

可以是下面這些選項中的單個。PageHeapOptions 區分大小寫。如果不指定選項,所有可能的頁堆句柄都會顯示出來。

選項

作用

-h Handle

使得調試器顯示句柄為Handle的頁堆的詳細信息。

-a Address

使得調試器查找塊中包含Address的頁堆。會包含該地址和完整的頁堆塊的關系的詳細信息,如是否該地址是頁堆的一部分、它在塊中的偏移,以及這個塊已經被分配還是空閑的。在可能時還會包含堆棧回溯。使用該選項時,顯示的大小是堆分配粒度的倍數。

-t[c|s] [Traces]

使得調試器顯示大量使用堆的用戶(heavy heap users)的紀錄(collected traces)。Traces指定要顯示的紀錄數量,默認值為4。如果有比指定的數量更多的紀錄,則顯示前面的部分紀錄。如果使用-t 或者-tc ,則紀錄以使用記數(count usage)排序。如果使用-ts ,則紀錄以大小排序。 (-tc-ts 選項僅在Windows XP中支持,-t選項在Windows XP和之前的版本中都支持。)

-fi [Traces]

(Windows?XP 和之后) 使得調試器顯示最近的故障注入紀錄(fault injection traces)。 Traces 指定要顯示的熟練,默認值為4。

-all

(Windows?XP和之后) 使得調試器顯示所有頁堆的詳細信息。

-?

使得調試器顯示頁堆幫助(page heap help),包括堆塊的圖表。(這些圖表在下面的注釋節中可以看到。)

使用任何!heap -p 擴展命令之前,目標進程中必須已經啟用了頁堆。查看后面注釋節中的詳細說明。

-srch

(Windows?XP 和之后) 在所有堆中進行查找。

Pattern

(Windows?XP 和之后) 要查找的內容。

Size

(Windows?XP 和之后) 可以是下面選項中的任意一個。用于指定pattern 的大小。必須使用'-'。

選項

作用

-b

pattern的大小是一個BYTE。

-w

pattern的大小是一個WORD。

-d

pattern的大小是一個DWORD。

-q

pattern的大小是一個QWORD。

如果不指定上面任何一個,則會假定pattern 的大小和機器的指針大小一致。

-flt

(Windows?XP和之后) 將顯示出來的堆限制為指定大小或大小范圍的。

FilterOptions

(Windows?XP 和之后) 可以是下面選項之一。FilterOptions 區分大小寫。

選項

作用

s Size

限制顯示出來的堆必須是指定的大小。

r SizeMin SizeMax

限制顯示出來的堆大小在指定范圍內。

-stat

(Windows?XP和之后) 顯示指定的堆的使用統計。

-h Handle

(Windows?XP 和之后) 只有句柄為Handle的堆的使用統計會顯示出來。如果Handle為0或者省略,則所有堆的使用統計都會顯示。

-grp GroupBy

(Windows?XP 和之后) 按照GroupBy 的指定重新排序顯示。GroupBy 選項可以是下表中的值。

選項

作用

A

根據分配大小顯示使用統計。

B

根據塊數量顯示使用統計。

S

根據每次分配的總大小顯示使用統計。

MaxDisplay

(Windows?XP和之后) 限制輸出最多為MaxDisplay 行。

-?

在調試器命令窗口中顯示該命令的簡要幫助文本。使用!heap -? 查看常規幫助,!heap -p -? 查看頁堆幫助。 (頁堆幫助只在Windows 2000和之后的系統中可用。)

DLL

Windows?NT?4.0

Ext.dll
Kdextx86.dll
Ntsdexts.dll

Windows?2000

Ext.dll
Kdextx86.dll
Ntsdexts.dll

Windows?XP 和之后

Ext.dll
Exts.dll

注釋

該擴展命令可以用來實現幾種任務。

標準的!heap 命令用來顯示當前進程的堆信息。(僅針對用戶模式進程。!pool 擴展命令用于系統進程。)

!heap -b!heap -B 命令用于在堆管理器中創建或者刪除條件斷點。

!heap -l 命令檢查泄露的堆塊。它使用一種垃圾回收算法(garbage collector algorithm)來檢測沒有被進程地址空間中任何地方引用到的已占用塊(busy blocks)。對很大的程序,可能需要花費數分鐘才能完成。該命令只在Windows XP和之后版本中可以使用。

!heap -x 命令搜索包含給定地址的堆塊。如果使用了-v 選項,該命令還會搜索當前進程的整個虛擬地址空間,以獲得指向該堆塊的指針。這個命令僅在Windows XP和之后版本中可以使用。

!heap -p 命令顯示各種形式的頁堆(page heap)信息。僅在Windows 2000(Service Pack 1或之后)、Windows XP、以及之后版本的Windows中可用。如果在調試Windows NT 4.0,則需要使用!dphdump!dphfind!dphflags!dphhogs來替代。

使用!heap –p之前,必須啟用目標進程的頁堆(page heap)。這可以通過全局標志 (gflags.exe) 實用工具實現。打開該工具,在Image File Name 文本框中填入目標進程的名字,選擇Image File Options 以及Enable page heap ,然后點擊Apply 。也可以從命令提示符窗口輸入gflags /i xxx.exe +hpa 來運行全局標志工具,xxx.exe 是目標程序的名字。

注意在NT 4.0中,只有在調試器已經附加或者進程啟動時全局標志已經進行過了適當的設置時,頁堆命令才能正確工作。

!heap -p -t[c|s] 命令在Windows XP之后就不支持了。可以使用調試器工具包中的UMDH工具來獲得類似的結果。

!heap -srch 命令顯示包含指定模板的堆條目(heap entries)。該命令僅在Windows XP和之后版本中可以使用。

!heap -flt 命令限制只顯示分配大小為指定值的堆。該命令僅在Windows XP和之后版本中可用。

!heap -stat 命令顯示堆使用統計。該命令僅在Windows XP和之后版本可用。

這里是一個標準的!heap 命令的示例:

0:000>?!ntsdexts.heap?-a
Index???Address??Name??????Debugging?options?enabled
??1:???00250000?
????Segment?at?00250000?to?00350000?(00056000?bytes?committed)
????Flags:???????????????50000062
????ForceFlags:??????????40000060
????Granularity:?????????8?bytes
????Segment?Reserve:?????00100000
????Segment?Commit:??????00004000
????DeCommit?Block?Thres:00000400
????DeCommit?Total?Thres:00002000
????Total?Free?Size:?????000003be
????Max.?Allocation?Size:7ffddfff
????Lock?Variable?at:????00250b54
????Next?TagIndex:???????0012
????Maximum?TagIndex:????07ff
????Tag?Entries:?????????00350000
????PsuedoTag?Entries:???00250548
????Virtual?Alloc?List:??00250050
????UCR?FreeList:????????002504d8
????128-bit?bitmap?of?free?lists
????FreeList?Usage:??????00000014?00000000?00000000?00000000
??????????????Free????Free
??????????????List????List
??????????????#???????Head??????Blink??????Flink
????FreeList[?00?]?at?002500b8:?002a4378?.?002a4378
????????????????????????????????0x02?-?HEAP_ENTRY_EXTRA_PRESENT
????????????????????????????????0x04?-?HEAP_ENTRY_FILL_PATTERN
????????Entry?????Prev????Cur???0x10?-?HEAP_ENTRY_LAST_ENTRY

Address???Size????Size??flags
002a4370:?00098?.?01c90?[14]?-?free
????FreeList[?02?]?at?002500c8:?0025cb30?.?002527b8
002527b0:?00058?.?00010?[04]?-?free
0025cb28:?00088?.?00010?[04]?-?free
????FreeList[?04?]?at?002500d8:?00269a08?.?0026e530
0026e528:?00038?.?00020?[04]?-?free
0026a4d0:?00038?.?00020?[06]?-?free
0026f9b8:?00038?.?00020?[04]?-?free
0025cda0:?00030?.?00020?[06]?-?free
00272660:?00038?.?00020?[04]?-?free
0026ab60:?00038?.?00020?[06]?-?free
00269f20:?00038?.?00020?[06]?-?free
00299818:?00038?.?00020?[04]?-?free
0026c028:?00038?.?00020?[06]?-?free
00269a00:?00038?.?00020?[46]?-?free
????
????Segment00?at?00250b90:
Flags:???????????00000000
Base:????????????00250000
First?Entry:?????00250bc8
Last?Entry:??????00350000
Total?Pages:?????00000080
Total?UnCommit:??00000055
Largest?UnCommit:000aa000
UnCommitted?Ranges:?(1)
????002a6000:?000aa000

????Heap?entries?for?Segment00?in?Heap?250000
????????????????????????0x01?-?HEAP_ENTRY_BUSY????????????
????????????????????????0x02?-?HEAP_ENTRY_EXTRA_PRESENT???
????????????????????????0x04?-?HEAP_ENTRY_FILL_PATTERN????
????????????????????????0x08?-?HEAP_ENTRY_VIRTUAL_ALLOC???
????????????????????????0x10?-?HEAP_ENTRY_LAST_ENTRY??????
????????????????????????0x20?-?HEAP_ENTRY_SETTABLE_FLAG1??
????????????????????????0x40?-?HEAP_ENTRY_SETTABLE_FLAG2??
Entry?????Prev????Cur???0x80?-?HEAP_ENTRY_SETTABLE_FLAG3??

Address???Size????Size??flags???????(Bytes?used)????(Tag?name)
00250000:?00000?.?00b90?[01]?-?busy?(b90)
00250b90:?00b90?.?00038?[01]?-?busy?(38)?
00250bc8:?00038?.?00040?[07]?-?busy?(24),?tail?fill?(NTDLL!LDR?Database)
00250c08:?00040?.?00060?[07]?-?busy?(48),?tail?fill?(NTDLL!LDR?Database)
00250c68:?00060?.?00028?[07]?-?busy?(10),?tail?fill?(NTDLL!LDR?Database)
00250c90:?00028?.?00060?[07]?-?busy?(48),?tail?fill?(NTDLL!LDR?Database)
00250cf0:?00060?.?00050?[07]?-?busy?(38),?tail?fill?(Objects=??80)
00250d40:?00050?.?00048?[07]?-?busy?(2e),?tail?fill?(NTDLL!LDR?Database)
00250d88:?00048?.?00c10?[07]?-?busy?(bf4),?tail?fill?(Objects>1024)
00251998:?00c10?.?00030?[07]?-?busy?(12),?tail?fill?(NTDLL!LDR?Database)
...
002525c0:?00030?.?00060?[07]?-?busy?(48),?tail?fill?(NTDLL!LDR?Database)
00252620:?00060?.?00050?[07]?-?busy?(38),?tail?fill?(NTDLL!LDR?Database)
00252670:?00050?.?00040?[07]?-?busy?(22),?tail?fill?(NTDLL!CSRSS?Client)
002526b0:?00040?.?00040?[07]?-?busy?(24),?tail?fill?(Objects=??64)
002526f0:?00040?.?00040?[07]?-?busy?(24),?tail?fill?(Objects=??64)
00252730:?00040?.?00028?[07]?-?busy?(10),?tail?fill?(Objects=??40)
00252758:?00028?.?00058?[07]?-?busy?(3c),?tail?fill?(Objects=??88)
002527b0:?00058?.?00010?[04]?free?fill
002527c0:?00010?.?00058?[07]?-?busy?(3c),?tail?fill?(NTDLL!LDR?Database)
00252818:?00058?.?002d0?[07]?-?busy?(2b8),?tail?fill?(Objects=?720)
00252ae8:?002d0?.?00330?[07]?-?busy?(314),?tail?fill?(Objects=?816)
00252e18:?00330?.?00330?[07]?-?busy?(314),?tail?fill?(Objects=?816)
00253148:?00330?.?002a8?[07]?-?busy?(28c),?tail?fill?(NTDLL!LocalAtom)
002533f0:?002a8?.?00030?[07]?-?busy?(18),?tail?fill?(NTDLL!LocalAtom)
00253420:?00030?.?00030?[07]?-?busy?(18),?tail?fill?(NTDLL!LocalAtom)
00253450:?00030?.?00098?[07]?-?busy?(7c),?tail?fill?(BASEDLL!LMEM)
002534e8:?00098?.?00060?[07]?-?busy?(44),?tail?fill?(BASEDLL!TMP)
00253548:?00060?.?00020?[07]?-?busy?(1),?tail?fill?(Objects=??32)
00253568:?00020?.?00028?[07]?-?busy?(10),?tail?fill?(Objects=??40)
00253590:?00028?.?00030?[07]?-?busy?(16),?tail?fill?(Objects=??48)
...
0025ccb8:?00038?.?00060?[07]?-?busy?(48),?tail?fill?(NTDLL!LDR?Database)
0025cd18:?00060?.?00058?[07]?-?busy?(3c),?tail?fill?(NTDLL!LDR?Database)
0025cd70:?00058?.?00030?[07]?-?busy?(18),?tail?fill?(NTDLL!LDR?Database)
0025cda0:?00030?.?00020?[06]?free?fill?(NTDLL!Temporary)
0025cdc0:?00020?.?00258?[07]?-?busy?(23c),?tail?fill?(Objects=?600)
0025d018:?00258?.?01018?[07]?-?busy?(1000),?tail?fill?(Objects>1024)
0025e030:?01018?.?00060?[07]?-?busy?(48),?tail?fill?(NTDLL!LDR?Database)
...
002a4190:?00028?.?00118?[07]?-?busy?(100),?tail?fill?(BASEDLL!GMEM)
002a42a8:?00118?.?00030?[07]?-?busy?(18),?tail?fill?(Objects=??48)
002a42d8:?00030?.?00098?[07]?-?busy?(7c),?tail?fill?(Objects=?152)
002a4370:?00098?.?01c90?[14]?free?fill
002a6000:??????000aa000??????-?uncommitted?bytes.

這是!heap -l 命令的示例:

1:0:011>?!heap?-l
1:Heap?00170000
Heap?00280000
Heap?00520000
Heap?00b50000
Heap?00c60000
Heap?01420000
Heap?01550000
Heap?016d0000
Heap?019b0000
Heap?01b40000
Scanning?VM?...
Entry?????User??????Heap??????Segment???????Size??PrevSize??Flags
----------------------------------------------------------------------
001b2958??001b2960??00170000??00000000????????40????????18??busy?extra
001b9cb0??001b9cb8??00170000??00000000????????80???????300??busy?extra
001ba208??001ba210??00170000??00000000????????80????????78??busy?extra
001cbc90??001cbc98??00170000??00000000????????e0????????48??busy?extra
001cbd70??001cbd78??00170000??00000000????????d8????????e0??busy?extra
001cbe90??001cbe98??00170000??00000000????????68????????48??busy?extra
001cbef8??001cbf00??00170000??00000000????????58????????68??busy?extra
001cc078??001cc080??00170000??00000000????????f8???????128??busy?extra
001cc360??001cc368??00170000??00000000????????80????????50??busy?extra
001cc3e0??001cc3e8??00170000??00000000????????58????????80??busy?extra
001fe550??001fe558??00170000??00000000???????150???????278??busy?extra
001fe6e8??001fe6f0??00170000??00000000????????48????????48??busy?extra
002057a8??002057b0??00170000??00000000????????58????????58??busy?extra
00205800??00205808??00170000??00000000????????48????????58??busy?extra
002058b8??002058c0??00170000??00000000????????58????????70??busy?extra
00205910??00205918??00170000??00000000????????48????????58??busy?extra
00205958??00205960??00170000??00000000????????90????????48??busy?extra
00246970??00246978??00170000??00000000????????60????????88??busy?extra
00251168??00251170??00170000??00000000????????78????????d0??busy?extra?user_flag
00527730??00527738??00520000??00000000????????40????????40??busy?extra
00527920??00527928??00520000??00000000????????40????????80??busy?extra
21?leaks?detected.

例子中找到了21處泄露。

這是一個!heap -x 命令的示例:

0:011>?!heap?002057b8?-x
Entry?????User??????Heap??????Segment???????Size??PrevSize??Flags
----------------------------------------------------------------------
002057a8??002057b0??00170000??00170640????????58????????58??busy?extra

這是!heap -x -v 命令的示例:

1:0:011>?!heap?002057b8?-x?-v
1:Entry?????User??????Heap??????Segment???????Size??PrevSize??Flags
----------------------------------------------------------------------
002057a8??002057b0??00170000??00170640????????58????????58??busy?extra

Search?VM?for?address?range?002057a8?-?002057ff?:?00205990?(002057d0),

該例子中,地址0x00205990處有一個指向該堆塊的指針。

這是!heap -flt s 命令的示例:

0:001>!heap?-flt?s?0x50

會顯示所有大小為0x50的堆分配。

這是!heap -flt r 命令的示例:

0:001>!heap?-flt?r?0x50?0x80

這會顯示大小在0x50 和0x7F 之間的堆分配。

下面是!heap -srch 命令的示例:

0:001>?!heap?-srch?77176934
????_HEAP?@?00090000
???in?HEAP_ENTRY:?Size?:?Prev?Flags?-?UserPtr?UserSize?-?state
????????00099A48:?0018?:?0005?[01]?-?00099A50?(000000B8)?-?(busy)
??????????ole32!CALLFRAME_CACHE<INTERFACE_HELPER_CLSID>::`vftable'
????_HEAP?@?00090000
???in?HEAP_ENTRY:?Size?:?Prev?Flags?-?UserPtr?UserSize?-?state
????????00099B58:?0018?:?0005?[01]?-?00099B60?(000000B8)?-?(busy)
??????????ole32!CALLFRAME_CACHE<INTERFACE_HELPER_CLSID>::`vftable'

下面的圖表是堆塊的格式。這是Windows 2000(Service Pack 1和之后)、Windows XP、以及之后的系統中的形式。

Light page heap 塊 — 已分配:

?+-----+---------------+---+??????????????????????????????????
?|?????|???????????????|???|??????????????????????????????????
?+-----+---------------+---+??????????????????????????????????
????^?????????^??????????^????????????????????????????????????
????|?????????|??????????8?
字節后綴 ?( 0xA0 填充 )????
????|?????????
用戶分配 (User?allocation)?( 如果沒有要求清 0 ,則填充為 ?E0 )?
????
塊首 ?( ?0xABCDAAAA? 開頭, 0xDCBAAAAA 結尾 )?

Light page heap 塊 已釋放:

?+-----+---------------+---+??????????????????????????????????
?|?????|???????????????|???|??????????????????????????????????
?+-----+---------------+---+??????????????????????????????????
????^?????????^??????????^????????????????????????????????????
????|?????????|??????????8?
字節后綴 ?( 0xA0 填充 )????
????|?????????
用戶分配 ?( 如果沒有要求清 0 ,則填充為 ?E0)??????????
????
塊首 ?( ?0xABCDAAA9? 開頭, 0xDCBAAA9 結尾 )?

Full page heap 塊 — 已分配:

?+-----+---------+---+-------?????????????????????????????????
?|?????|?????????|???|??...?N/A?page??????????????????????????
?+-----+---------+---+-------?????????????????????????????????
????^???????^??????^??????????????????????????????????????????
????|???????|??????0-7?
字節后綴 ?( ?0xD0 填充 )????????
????|???????
用戶分配 ?( 如果未要求清 0 Windows 2000 中填充為 E0 ,???
????????????Windows?XP
中填充為 C0 )???????
????
塊首 ?( ?0xABCDBBBB? 開頭, 0xDCBABBBB 結尾 )?

Full page heap 塊 —已釋放:

?+-----+---------+---+-------?????????????????????????????????
?|?????|?????????|???|??...?N/A?page??????????????????????????
?+-----+---------+---+-------?????????????????????????????????
????^???????^??????^??????????????????????????????????????????
????|???????|??????0-7?
字節后綴 ?( ?0xD0 填充 )????????
????|???????
用戶分配 ?( ?F0? 填充 )????????????
????
塊首 ?( ?0xABCDBBA? 開頭, 0xDCBABBBA 結尾 )?

要查看Windows 2000下對堆塊或者full page heap 塊的分配和釋放的堆棧回溯,可以對頭地址使用dds?(Display Words and Symbols) 命令。

要查看Windows XP和之后的Windows下對堆塊或者full page heap 塊的分配和釋放的堆棧回溯,對頭地址實用 dt?DPH_BLOCK_INFORMATION ,然后對StackTrace字段使用 dds

Windows 2000的Full page heap 塊位于包含用戶分配內存的頁面的開頭或者前一個頁面的開頭。

附加信息

關于堆的更多信息,查看Microsoft Windows SDK 文檔、Windows Driver Kit (WDK)文檔、以及Mark Russinovich和David Solomon編寫的Microsoft Windows Internal

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性欧美超级视频| 亚洲精品一区二区三区av| 在线欧美视频| 红桃av永久久久| 黄色亚洲精品| 亚洲国产成人av在线| 亚洲精品国产精品久久清纯直播| 亚洲黄色视屏| 中文av字幕一区| 欧美一级视频| 欧美高清在线一区二区| 亚洲国产日韩在线| 亚洲黄色成人网| 亚洲一二三四久久| 久久国产精彩视频| 欧美成人精品激情在线观看| 欧美日韩国产小视频| 国产精品女同互慰在线看| 激情综合在线| 亚洲性人人天天夜夜摸| 久久免费视频一区| 亚洲理伦在线| 久久激情五月丁香伊人| 欧美—级高清免费播放| 国产精品羞羞答答xxdd| 精品999在线播放| 亚洲一区二区三区精品视频| 免费高清在线一区| 这里只有精品视频| 狼人社综合社区| 国产乱子伦一区二区三区国色天香| 一色屋精品亚洲香蕉网站| 国产精品99久久99久久久二8| 午夜精品免费视频| 91久久国产精品91久久性色| 亚洲青色在线| 久久福利资源站| 欧美亚男人的天堂| 亚洲精选成人| 欧美成人一区二区三区| 欧美亚洲免费| 国产精品在线看| 亚洲五月六月| 亚洲精品一区二区三区在线观看 | 欧美专区在线观看| 欧美性猛交xxxx乱大交蜜桃| 91久久精品一区二区别| 久久看片网站| 亚洲一区二区三区精品动漫| 欧美韩日一区二区| 亚洲国产高清一区二区三区| 美女网站久久| 久久久久久久久综合| 国产一区二区在线免费观看 | 国产精品99久久久久久久女警 | 91久久精品美女高潮| 久久五月天婷婷| 久久久久久久久久码影片| 国产主播一区| 另类国产ts人妖高潮视频| 久久99伊人| 有码中文亚洲精品| 老巨人导航500精品| 久久久av水蜜桃| 亚洲国产免费| 亚洲精品欧美日韩专区| 欧美日韩国产综合久久| 一区二区三区欧美在线观看| 亚洲美女av在线播放| 欧美性理论片在线观看片免费| 亚洲综合第一| 欧美一区二区三区视频免费播放| 国语自产精品视频在线看| 久久影院亚洲| 欧美大片在线看| 亚洲午夜在线观看视频在线| 中日韩男男gay无套| 国产九九视频一区二区三区| 久久久久久久欧美精品| 女生裸体视频一区二区三区| 99视频在线观看一区三区| 一区二区国产在线观看| 国产午夜精品久久久| 欧美顶级少妇做爰| 欧美性大战久久久久久久蜜臀| 国产一区二区久久| 亚洲第一福利视频| 亚洲三级视频在线观看| 欧美性大战久久久久久久| 久久久久久久999| 欧美成人午夜77777| 亚洲欧美日韩视频二区| 久久久99国产精品免费| 亚洲一二区在线| 久久久国产精品一区二区中文 | 国产午夜精品久久| 亚洲国产成人在线| 国产精品视频yy9099| 欧美风情在线观看| 国产精品午夜在线| 欧美国产日产韩国视频| 国产精品久久久久免费a∨大胸| 久久久欧美一区二区| 欧美日韩天天操| 久久只有精品| 国产精品视频xxxx| 亚洲国产欧美一区二区三区久久 | 99亚洲视频| 久久久久国产一区二区三区| 亚洲色在线视频| 久久综合电影一区| 久久成人国产| 欧美香蕉视频| 亚洲国产精品t66y| 黄色一区二区在线| 亚洲欧美国产三级| 亚洲欧美日本国产有色| 欧美激情一级片一区二区| 快播亚洲色图| 国精品一区二区三区| 亚洲一区二区伦理| 亚洲午夜国产成人av电影男同| 麻豆成人av| 欧美成人一区二区三区在线观看| 国产精品网站在线播放| 亚洲美女色禁图| 亚洲麻豆av| 欧美国产成人精品| 亚洲国产成人久久综合| 亚洲精美视频| 免费久久久一本精品久久区| 久久综合色一综合色88| 国产一区二区视频在线观看| 性久久久久久久久| 久久爱www久久做| 国产精品影片在线观看| 亚洲一区二区在线免费观看视频| 亚洲视频网站在线观看| 欧美日韩午夜精品| 一区二区精品| 校园春色综合网| 国产农村妇女精品一二区| 午夜精品久久| 久久夜色精品国产欧美乱极品| 狠狠色噜噜狠狠狠狠色吗综合| 欧美一区二区三区在线看| 久久久另类综合| 亚洲第一精品夜夜躁人人爽| 免费看成人av| 亚洲午夜高清视频| 亚洲先锋成人| 欧美在线视频日韩| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲一区中文| 国产欧美日韩免费| 久久久99精品免费观看不卡| 欧美韩日高清| 亚洲一区二区欧美日韩| 国产精品婷婷| 老司机亚洲精品| 一本一本a久久| 久久大综合网| 亚洲日韩欧美视频| 国产精品欧美日韩一区二区| 欧美在线资源| 亚洲美女性视频| 久久久综合网| 99成人免费视频| 国产日韩欧美在线看| 欧美成人69| 性亚洲最疯狂xxxx高清| 亚洲国产精品综合| 性做久久久久久| 亚洲黄色三级| 国产日韩av在线播放| 欧美激情精品久久久六区热门 | 亚洲精选大片| 国产香蕉97碰碰久久人人| 欧美高清视频www夜色资源网| 亚洲一区二区在线播放| 91久久极品少妇xxxxⅹ软件| 午夜精品影院在线观看| 亚洲精品综合| 亚洲国产99| 国产一区二区三区四区三区四| 欧美人在线观看| 美女尤物久久精品| 性xx色xx综合久久久xx| 一区二区三区四区五区精品视频 | 中国成人在线视频| 亚洲国产日韩欧美在线99| 国产日韩在线看| 国产精品久久福利| 欧美日韩喷水| 欧美黑人多人双交| 免费观看一级特黄欧美大片| 久久丁香综合五月国产三级网站| 中文在线一区| 亚洲特黄一级片| 亚洲天堂黄色|