Compartilhar via


Arquivos de metadados para plug-ins de extensão de análise

Ao escrever um plug-in de extensão de análise, você também escreve um arquivo de metadados que descreve as situações para as quais você deseja que seu plug-in seja chamado. Quando o comando !analyze depurgger é executado, ele usa arquivos de metadados para determinar quais plug-ins carregar.

Crie um arquivo de metadados que tenha o mesmo nome que seu plug-in de extensão de análise e uma extensão de .alz. Por exemplo, se o plug-in de extensão de análise for nomeado MyAnalyzer.dll, seu arquivo de metadados deverá ser chamado de MyAnalyzer.alz. Coloque o arquivo de metadados no mesmo diretório que o plug-in de extensão de análise.

Um arquivo de metadados para um plug-in de extensão de análise é um arquivo de texto ASCII que contém pares chave-valor. Chaves e valores são separados por espaço em branco. Uma chave pode ter qualquer caractere que não seja de espaço em branco. As chaves não diferenciam maiúsculas de minúsculas.

Após a chave e o espaço em branco a seguir, o valor correspondente começa. Um valor pode ter um dos formulários a seguir.

  • Qualquer conjunto de caracteres até o final da linha. Esse formulário funciona para valores que não contêm caracteres de nova linha.

    Importante Se o último valor no arquivo de metadados tiver um valor desse formulário, a linha deverá terminar com um caractere de nova linha.

  • Qualquer conjunto de caracteres entre chaves { }. O formulário funciona para valores que contêm caracteres de nova linha.

Uma linha que começa com # é um comentário e é ignorada. Os comentários só podem começar onde as chaves são esperadas.

Você pode usar as seguintes chaves em um arquivo de metadados.

Chave Descrição
PluginId Cadeia de caracteres – identifica o plug-in.
DebuggeeClass Cadeia de caracteres – os valores possíveis são "Kernel" e "User". Indica que o plug-in está interessado em analisar apenas falhas no modo kernel ou apenas falhas no modo de usuário.
BugCheckCode Código de marcar de bugs de 32 bits – indica que o plug-in está interessado em analisar esse bug marcar código. Um único arquivo de metadados pode especificar vários códigos de marcar de bugs.
ExceptionCode Código de exceção de 32 bits – indica que o plug-in está interessado em analisar esse código de exceção. Um único arquivo de metadados pode especificar vários códigos de exceção.
ExecutableName Cadeia de caracteres – indica que o plug-in está interessado apenas em sessões em que esse é o executável em execução do processo a ser analisado. Um único arquivo de metadados pode especificar vários nomes executáveis.
ImageName Cadeia de caracteres – indica que o plug-in só está interessado em sessões em que a análise padrão considera essa imagem (dll, sys ou exe) como falha. O plug-in é invocado após a análise determinar qual imagem está em falha. Um único arquivo de metadados pode especificar vários nomes de imagem.
MaxTagCount Inteiro – o número máximo de marcas personalizadas que o plug-in precisa. Marcas personalizadas são marcas diferentes daquelas definidas em extsfns.h.

Arquivos de metadados de exemplo

O arquivo de metadados a seguir descreve um plug-in que está interessado em analisar marcar 0xE2 de código de bug. (Lembre-se de que a última linha deve terminar com um caractere de nova linha.)

PluginId      MyPlugin
DebuggeeClass Kernel
BugCheckCode  0xE2

O arquivo de metadados a seguir descreve um plug-in que está interessado em analisar verificações de bugs 0x8, 0x9 e 0xA se MyDriver.sys for considerado o módulo com falha.

PluginId      MyPlugin
DebuggeeClass Kernel
BugCheckCode  0x8
BugCheckCode  0x9
BugCheckCode  0xA
ImageName     MyDriver.sys

O arquivo de metadados a seguir descreve um plug-in que está interessado em analisar o código de exceção 0xC0000005 se MyApp.exe for o executável em execução do processo que está sendo analisado. Além disso, o plug-in pode criar até três marcas personalizadas.

PluginId        MyPlugin
DebuggeeClass   User
ExceptionCode   0xC0000005
ExecutableName  MyApp.exe

As Ferramentas de Depuração para Windows têm um exemplo que você pode usar para criar um módulo de extensão de depurador chamado dbgexts.dll. Este módulo de extensão implementa vários comandos de extensão de depurador, mas também pode servir como um plug-in de extensão de análise; ou seja, exporta uma função _EFN_Analyze . Aqui está um arquivo de metadados que descreve dbgexts.dll como um plug-in de extensão de análise.

PluginId         PluginSample
DebuggeeClass   User
ExceptionCode   0xc0000005
ExecutableName      cdb.exe
ExecutableName      windbg.exe
#
# Custom tag descriptions 
#
TagDesc         0xA0000000  SAMPLE_PLUGIN_DEBUG_TEXT    {Sample debug help text from plug-in analysis}
#

Confira também

Gravando um plug-in de extensão de análise para estender !analyze

_EFN_Analyze

!Analisar