Compartilhar via


!search

A extensão !search pesquisa páginas na memória física em busca de dados do tamanho de ponteiro que correspondam aos critérios especificados.

Sintaxe

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

Parâmetros

-s
Faz com que erros de verificação de símbolos sejam ignorados durante a pesquisa. Isso será útil se você estiver recebendo muitos erros de "símbolos incorretos para kernel".

-p
Faz com que o valor de Data seja interpretado como um valor de 32 bits, impedindo qualquer extensão de sinal.

Dados
Especifica os dados a serem pesquisados. Data deve ter o tamanho de um ponteiro no sistema de destino (32 bits ou 64 bits). Uma correspondência exata para o valor de Data sempre é exibida. Outras correspondências também são exibidas, dependendo do valor de Delta. Confira a seção Comentários abaixo para obter detalhes.

Delta
Especifica a diferença permitida entre um valor na memória e o valor de Data. Veja a seção Comentários abaixo para obter os detalhes.

StartPFN
Especifica o PFN (número de quadro de página) do início do intervalo a ser pesquisado. Se for omitido, a pesquisa começará na página física mais baixa.

EndPFN
Especifica o PFN (número de quadro de página) do fim do intervalo a ser pesquisado. Se for omitido, a pesquisa terminará na página física mais alta.

-?
Exibe a ajuda para essa extensão na janela Comando do Depurador.

DLL

Kdexts.dll

Informações Adicionais

Para obter mais maneiras de exibir e pesquisar a memória física, confira Memória de leitura e gravação.

Comentários

Se StartPFN e EndPFN forem especificados, eles serão considerados como os números de quadro de página do início e do fim do intervalo na memória física a ser pesquisado. Para obter uma explicação dos números de quadro de página, confira Convertendo endereços virtuais em endereços físicos. Se StartPFN e EndPFN forem omitidos, toda a memória física será pesquisada.

Todos os acessos são exibidos.

A extensão !search pesquisará toda a memória no intervalo de páginas especificado e examinará cada valor alinhado à ULONG_PTR. Os valores que atenderem pelo menos a um dos seguintes critérios serão exibidos:

  • O valor corresponde exatamente a Data.

  • Se Delta for 0 ou omitido: o valor será diferente de Data por um único bit.

  • Se Delta for diferente de zero: o valor será diferente de Data por, no máximo, Delta. Em outras palavras, o valor está no intervalo [Data - Delta, Data + Delta].

  • Se Delta for diferente de zero: o valor será diferente do número mais baixo do intervalo (Data - Delta) por um único bit.

Na maioria dos casos, Data especificará um endereço no qual você está interessado, mas quaisquer dados de tamanho ULONG_PTR podem ser especificados.

Como as estruturas do mecanismo de pesquisa do depurador residem na memória do computador de destino, se toda a memória (ou qualquer intervalo que contenha essas estruturas) for pesquisada, você verá correspondências na área onde as próprias estruturas estão localizadas. Se você precisar eliminar essas correspondências, faça uma busca por um valor aleatório; isso indicará onde as estruturas de pesquisa do depurador estão localizadas.

Aqui estão alguns exemplos. O seguinte exemplo pesquisará valores entre 0x80001230 e 0x80001238 na página de memória com PFN 0x237D, incluindo:

kd> !search 80001234 4 237d 237d 

O exemplo a seguir pesquisará nas páginas de memória que variam de PFN 0x2370 a 0x237F valores que estão dentro de um bit de 0x0F100F0F. As correspondências exatas são indicadas em negrito; as outras não são exatas:

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.

As colunas na exibição são as seguintes: Pfn é o PFN (número de quadro de página) da página; Offset é o deslocamento nessa página; Hit é o valor naquele endereço; Va é o endereço virtual mapeado para esse endereço físico (se este existir e puder ser determinado); Pte é a PTE (entrada da tabela de página).

Para calcular o endereço físico, desloque o PFN para a esquerda três dígitos hexadecimais (12 bits) e adicione o deslocamento. Por exemplo, a última linha na tabela é o endereço virtual 0x0237D000 + 0x428 = 0x0237D428.