find 和 findp 次指令會搜尋記憶體中的特定型樣。
格式find [-s string]
find effectiveaddress pattern [mask | delta]
findp [-sstring]
findpphysicaladdress pattern [mask | delta]
參數
項目
說明
-s
指出要搜尋的型樣是 ASCII 字串。
EffectiveAddress
指定有效或虛擬位址。 可使用符號、十六進位值或十六進位表示式來指定位址。
PhysicalAddress
指定實體或實際位址。 可使用符號、十六進位值或十六進位表示式來指定位址。
弦
指定指定 -s 選項時要搜尋的 ASCII 字串。 句點 (.) 用來符合任何字元。
型樣
指定要搜尋之型樣的十六進位值。 型樣長度限制為一個單字。
面具
如果指定型樣,則可以指定遮罩,以從符合的目的考量中排除位元。 此參數是一個單字十六進位值。
德爾塔
指定在不成功的相符項之後要向前移動的增量。 此參數是一個單字十六進位值。
如果使用 -s 選項,則搜尋的型樣可以是 ASCII 字串,也可以是一個單字十六進位值。 如果搜尋是針對 ASCII 字串,則可以使用句點 (.) 來符合任何字元。
如果搜尋是針對十六進位值,則可以使用遮罩參數。 遮罩用來從考量中刪除位元。 當它在檢查是否符合時,來自記憶體的值會以遮罩結束,然後與指定的型樣進行比較以進行符合。 例如,遮罩 7fffffff 表示不考量高位元。 如果指定的型樣是 0000000d 且遮罩是 7fffffff,則值 0000000d 和 8000000d 都視為相符。
也可以指定參數來指出所套用的差異,以決定要檢查是否符合的下一個位址。 這可確保在特定界限上出現相符型樣。 例如,如果您要尋找在 64 位元組界限上對齊的 0f0000ff 型樣,則可以使用下列次指令:
find 0f0000ff ffffffff 40
預設差異是一個位元組 (用於比對字串) 和一個單字 (用於比對指定的十六進位型樣)。
如果 find 或 findp 次指令找到指定的型樣,則會顯示資料及位址。 按 Enter 鍵從該點繼續搜尋。
其他沒有別名。
範例以下是如何使用 find 和 findp 次指令的範例:
KDB(0)> tpid //print current thread
SLOT NAME STATE TID PRI CPUID CPU FLAGS WCHAN
thread+002F40 63*nfsd RUN 03F8F 03C 000 00000000
KDB(0)> find lock_pinned 03F8F 00ffffff 20 //search TID in the lock area
//compare only 24 low bits, on cache aligned addresses (delta 0x20)
lock_pinned+00D760: 00003F8F 00000000 00000005 00000000
KDB(0)>
Invalid address E800F000, skip to (^C to interrupt)
............... E8800000
Invalid address E8840000, skip to (^C to interrupt)
............... E9000000
Invalid address E9012000, skip to (^C to interrupt)
............... F0000000
KDB(0)> findp 0 E819D200 //search in physical memory
00F97C7C: E819D200 00000000 00000000 00000000
KDB(0)>
05C4FB18: E819D200 00000000 00000000 00000000
KDB(0)>
0F7550F0: E819D200 00000000 E60009C0 00000000
KDB(0)>
0F927EE8: E819D200 00000000 05E62D28 00000000
KDB(0)>
0FAE16E8: E819D200 00000000 05D3B528 00000000
KDB(0)>
kdb_get_real_memory: Out of range address 1FFFFFFF
KDB(0)>
KDB(0)>find -s 01A86260 pse //search "pse" in pse text code
01A86ED4: 7073 655F 6B64 6200 8062 0518 8063 0000 pse_kdb..b...c..
KDB(0)>
01A92952: 7073 6562 7566 6361 6C6C 735F 696E 6974 psebufcalls_init
KDB(0)>
01A939AE: 7073 655F 6275 6663 616C 6C00 0000 BF81 pse_bufcall.....
KDB(0)>
01A94F5A: 7073 655F 7265 766F 6B65 BEA1 FFD4 7D80 pse_revoke....}.
KDB(0)>
01A9547E: 7073 655F 7365 6C65 6374 BE41 FFC8 7D80 pse_select.A..}.
KDB(0)> find -s 01A86260 pse_....._thread //how to use '.'
01A9F586: 7073 655F 626C 6F63 6B5F 7468 7265 6164 pse_block_thread
KDB(0)>
01A9F6EA: 7073 655F 736C 6565 705F 7468 7265 6164 pse_sleep_thread