!search
L’extension !search recherche les pages de la mémoire physique pour des données de la taille d’un pointeur qui correspondent aux critères spécifiés.
Syntaxe
!search [-s] [-p] Data [ Delta [ StartPFN [ EndPFN ]]]
!search -?
Paramètres
-s
Cela a pour conséquence d’ignorer les erreurs de vérification des symboles pendant la recherche. Ceci est utile lorsque vous avez trop d’erreurs « symboles incorrects pour le noyau ».
-p
Cela provoque l’interprétation de la valeur de Data comme une valeur sur 32 bits, empêchant toute extension de signe.
Données
Cela spécifie les données à rechercher. Data doit avoir la taille d’un pointeur sur le système cible (32 bits ou 64 bits). Une correspondance exacte avec la valeur de Data est toujours affichée. D’autres correspondances sont également affichées, selon la valeur de Delta; veuillez consulter la section Remarques ci-dessous pour plus de détails.
Delta
Cela spécifie la différence admissible entre une valeur en mémoire et la valeur de Data. Veuillez consulter la section Remarques ci-dessous pour plus de détails.
StartPFN
Cela spécifie le numéro de cadre de page (PFN) du début de la plage à rechercher. Si cela est omis, la recherche commence à la page physique la plus basse.
EndPFN
Cela spécifie le numéro de cadre de page (PFN) de la fin de la plage à rechercher. Si cela est omis, la recherche se termine à la page physique la plus élevée.
- ?
Affiche l’aide pour cette extension dans la fenêtre de commande du débogueur.
DLL
Kdexts.dll
Informations supplémentaires
Pour voir d’autres façons d’afficher et de rechercher la mémoire physique, veuillez consulter la section Lecture et écriture de la mémoire.
Notes
Si StartPFN et EndPFN sont spécifiés, ils sont pris comme les numéros de cadre de page du début et de la fin de la plage dans la mémoire physique à rechercher. Pour une explication des numéros de cadre de page, veuillez consulter la section Conversion des adresses virtuelles en adresses physiques. Si StartPFN et EndPFN sont omis, toute la mémoire physique est recherchée.
Toutes les correspondances sont affichées.
L’extension !search recherchera dans toute la mémoire dans la plage de pages spécifiée et examinera chaque valeur alignée sur ULONG_PTR. Les valeurs qui satisfont au moins un des critères suivants sont affichées:
La valeur correspond exactement à Data.
Si Delta est 0 ou s’il est omis: La valeur diffère de Data d’un seul bit.
Si Delta est différent de zéro: La valeur diffère de Data par au maximum Delta. Autrement dit, la valeur se situe dans la plage [Data - Delta, Data + Delta].
Si Delta est différent de zéro: La valeur diffère du nombre le plus bas de la plage (Data - Delta) d’un seul bit.
Dans la plupart des cas, Data spécifiera une adresse qui vous intéresse, mais toute donnée de taille ULONG_PTR peut être spécifiée.
Étant donné que les structures du moteur de recherche du débogueur résident en mémoire sur l’ordinateur cible, si vous recherchez toute la mémoire (ou toute plage contenant ces structures), vous verrez des correspondances dans la zone où les structures elles-mêmes sont situées. Si vous devez éliminer ces correspondances, effectuez une recherche d’une valeur aléatoire; cela indiquera où se trouvent les structures de recherche du débogueur.
Voici quelques exemples. Voici un exemple de recherche dans la page mémoire avec PFN 0x237D pour des valeurs entre 0x80001230 et 0x80001238, inclusivement:
kd> !search 80001234 4 237d 237d
Voici une recherche dans les pages mémoire allant de PFN 0x2370 à 0x237F pour des valeurs qui sont à un bit près de 0x0F100F0F. Les correspondances exactes sont indiquées en gras; les autres diffèrent d’un bit:
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.
Les colonnes dans l’affichage sont les suivantes: Pfn est le numéro de cadre de page (PFN) de la page; Offset est le décalage sur cette page; Hit est la valeur à cette adresse; Va est l’adresse virtuelle mappée à cette adresse physique (si elle existe et peut être déterminée); Pte est l’entrée de table de pages (PTE).
Pour calculer l’adresse physique, décalez le PFN vers la gauche de trois chiffres hexadécimaux (12 bits) et ajoutez le décalage. Par exemple, la dernière ligne du tableau est l’adresse virtuelle 0x0237D000 + 0x428 = 0x0237D428.