!搜索

!search 延伸模組會搜尋實體記憶體中的頁面,以尋找符合指定準則的指標大小數據。

語法

!search [-s] [-p] Data [ Delta [ StartPFN [ EndPFN ]]] 
!search -?

參數

-s
導致搜尋期間忽略符號檢查錯誤。 如果您收到太多「核心的不正確符號」錯誤,這會很有用。

-p
導致 Data 的值解譯為 32 位值,以防止任何符號延伸。

數據
指定要搜尋的數據。 數據 必須是目標系統上指標的大小(32 位或64位)。 數據值的完全相符一律會顯示。 也會顯示其他相符項目,視 Delta 的值而定;如需詳細資訊,請參閱下方的一節。

三角洲
指定記憶體中的值與 Data之間的允許差異。 如需詳細資訊,請參閱下方的一節。

StartPFN
指定要搜尋範圍開頭的頁面框架編號 (PFN)。 如果省略此專案,搜尋會從最低的實體頁面開始。

EndPFN
指定要搜尋範圍結尾的頁面框架編號 (PFN)。 如果省略此專案,搜尋會以最高的實體頁面結束。

-?
在 [調試程式命令] 視窗中顯示此延伸模組的說明。

DLL

Kdexts.dll

其他資訊

如需顯示和搜尋物理記憶體的詳細資訊,請參閱 讀取和寫入記憶體

備註

如果 指定 StartPFNEndPFN ,則會將這些專案視為要搜尋之實體記憶體中範圍的開頭和結尾頁碼。 如需頁面框架號碼的說明,請參閱 將虛擬位址轉換成實體位址。 如果 省略 StartPFNEndPFN ,則會搜尋所有物理記憶體。

所有點擊都會顯示。

!search 延伸模組會搜尋指定之頁面範圍中的所有記憶體,並檢查每個ULONG_PTR對齊的值。 顯示至少滿足下列其中一個準則的值:

  • 完全符合數據

  • 如果 Delta 為 0 或省略:值會與 數據 以單一位不同。

  • 如果 Delta 不是零值:值最多與數據差異不同。 換句話說,此值位於 [Data - Delta, Data + Delta] 範圍中。

  • 如果 Delta 為非零值:值與範圍中最低的數位 (Data - Delta) 與單一位不同。

在大部分情況下, 數據 會指定您感興趣的位址,但可以指定任何ULONG_PTR大小的數據。

由於調試程式的搜尋引擎結構位於目標計算機上的記憶體中,如果您搜尋所有記憶體(或包含這些結構的任何範圍),您將會在結構本身所在的區域中看到相符專案。 如果您需要排除這些相符專案,請搜尋隨機值;這會指出調試程式的搜尋結構所在的位置。

以下列出一些範例。 下列會搜尋具有 PFN 0x237D的記憶體頁面,以尋找0x80001230與0x80001238之間的值,包含:

kd> !search 80001234 4 237d 237d 

下列內容會搜尋從 PFN 0x2370到0x237F的記憶體頁面,尋找位在一0x0F100F0F內的值。 完全相符專案會以粗體表示;其他專案則由一個位關閉:

kd> !search 0f100f0f 0 2370 237f
Searching PFNs in range 00002370 - 0000237F for [0F100F0F - 0F100F0F]

Pfn      Offset   Hit      Va       Pte      
- - - - - - - - - - - - - - - - - - -
0000237B 00000368 0F000F0F 01003368 C0004014 
0000237C 00000100 0F100F0F 01004100 C0004014 
0000237D 000003A8 0F100F0F 010053A8 C0004014 
0000237D 000003C8 0F100F8F 010053C8 C0004014 
0000237D 000003E8 0F100F0F 010053E8 C0004014 
0000237D 00000408 0F100F0F 01005408 C0004014 
0000237D 00000428 0F100F8F 01005428 C0004014 
Search done.

顯示中的資料列如下所示:Pfn 是頁面的頁框編號 (PFN) : 位移是該頁面上的位移; 點擊是該位址的值; Va 是對應至此實體位址的虛擬位址(如果存在且可以判斷): Pte 是頁面數據表專案 (PTE)。

若要計算實體位址,請將 PFN 左移三個十六進位數位(12 位),然後新增位移。 例如,數據表中的最後一行是虛擬位址0x0237D000 + 0x428 = 0x0237D428。