Compartir a través de


!search

La extensión !search busca en las páginas de la memoria física datos del tamaño de un puntero que coincidan con los criterios especificados.

Sintaxis

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

Parámetros

-s
Hace que se ignoren los errores de comprobación de símbolos durante la búsqueda. Esto es útil si está recibiendo demasiados errores de "símbolos incorrectos para el kernel".

-p
Hace que el valor de Data se interprete como un valor de 32 bits, evitando cualquier extensión de signo.

Datos
Especifica los datos que se van a buscar. Los datos deben tener el tamaño de un puntero en el sistema de destino (32 bits o 64 bits). Siempre se muestra una coincidencia exacta del valor de Data . También se muestran otras coincidencias, en función del valor de Delta; para obtener más detalles, consulte la sección Observaciones.

Delta
Especifica la diferencia permitida entre un valor en memoria y el valor de Datos. Para obtener más detalles, consulte la sección Observaciones.

StartPFN
Especifica el número de marco de página (PFN) del inicio del intervalo que se va a buscar. Si se omite, la búsqueda comienza en la página física más baja.

EndPFN
Especifica el número de marco de página (PFN) del final del intervalo que se va a buscar. Si se omite, la búsqueda finaliza en la página física más alta.

-?
Muestra un texto de ayuda para esta extensión en la ventana de comando del depurador.

Archivo DLL

Kdexts.dll

Información adicional

Para conocer más formas de visualizar y buscar en la memoria física, consulte Lectura y escritura de memoria.

Comentarios

Si se especifica StartPFN y EndPFN , estos se toman como los números de marco de página del inicio y el final del intervalo en memoria física que se va a buscar. Para obtener una explicación de los números de marco de página, consulte Conversión de direcciones virtuales en direcciones físicas. Si se omiten StartPFN y EndPFN, se buscará en toda la memoria física.

Se muestran todos los aciertos.

La extensión !search buscará en toda la memoria para en el intervalo de páginas especificado y examinará cada valor alineado con ULONG_PTR. Se muestran los valores que satisfacen al menos uno de los siguientes criterios:

  • El valor coincide exactamente con Data.

  • Si Delta es 0 o se omite: El valor difiere de Data en un solo bit.

  • Si Delta es distinto de cero: El valor difiere de Data como máximo en Delta. En otras palabras, el valor se encuentra en el intervalo [Data-Delta, Data + Delta].

  • Si Delta es distinto de cero: El valor difiere del número más bajo del intervalo (Data-Delta) en un solo bit.

En la mayoría de los casos, Data especificará una dirección que le interese, pero se puede especificar cualquier dato de tamaño ULONG_PTR.

Dado que las estructuras del motor de búsqueda del depurador residen en la memoria del equipo de destino, si busca en toda la memoria (o en cualquier intervalo que contenga estas estructuras) verá coincidencias en la zona donde se encuentran las propias estructuras. Si necesita eliminar estas coincidencias, realice una búsqueda de un valor aleatorio; esto le indicará dónde se encuentran las estructuras de búsqueda del depurador.

Aquí hay algunos ejemplos. Lo siguiente buscará en la página de memoria con PFN 0x237D valores entre 0x80001230 y 0x80001238, ambos inclusive:

kd> !search 80001234 4 237d 237d 

Lo siguiente buscará en las páginas de memoria que van de PFN 0x2370 a 0x237F valores que estén dentro de un bit de 0x0F100F0F. Las coincidencias exactas se indican en negrita; las demás están desviadas en 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.

Las columnas de la visualización son las siguientes: Pfn es el número de marco de página (PFN) de la página; Offset es el desplazamiento en esa página; Hit es el valor en esa dirección; Va es la dirección virtual asignada a esta dirección física (si existe y puede determinarse); Pte es la entrada de la tabla de páginas (PTE).

Para calcular la dirección física, desplace el PFN tres dígitos hexadecimales (12 bits) a la izquierda y añada el desplazamiento. Por ejemplo, la última línea de la tabla es la dirección virtual 0x0237D000 + 0x428 = 0x0237D428.