Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 deseja que o plug-in seja chamado. Quando o comando !analyze debugger é executado, ele usa arquivos de metadados para determinar quais plug-ins carregar.
Crie um ficheiro de metadados que tenha o mesmo nome do seu plug-in de extensão de análise e a extensão .alz. Por exemplo, se o plug-in de extensão de análise for chamado MyAnalyzer.dll, seu arquivo de metadados deverá ser chamado MyAnalyzer.alz. Coloque o arquivo de metadados no mesmo diretório que o plug-in de extensão de análise.
Um ficheiro de metadados para uma extensão de análise (plug-in) é um ficheiro de texto ASCII que contém pares de chave-valor. As chaves e os 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 seguinte espaço em branco, o valor correspondente começa. Um valor pode ter uma das seguintes formas.
Qualquer conjunto de caracteres até ao final da linha. Este formulário funciona para valores que não contêm nenhum caractere 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.
| Key | Descrição |
|---|---|
| PluginId | String - Identifica o plug-in. |
| DebuggeeClass | String - Os valores possíveis são "Kernel" e "User". Indica que o plug-in está interessado em analisar apenas falhas de modo kernel ou apenas falhas de modo de usuário. |
| Código de Verificação de Erro | Código de verificação de bug de 32 bits - Indica que o plug-in está interessado em analisar esse código de verificação de bug. Um único arquivo de metadados pode especificar vários códigos de verificação de bugs. |
| Código de exceção | 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. |
| Nome do Executável | String - Indica que o plug-in está interessado apenas em sessões em que este é o executável em execução do processo a ser analisado. Um único arquivo de metadados pode especificar vários nomes executáveis. |
| Nome da imagem | String - 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 ter determinado qual imagem é a que apresenta falha. Um único arquivo de metadados pode especificar vários nomes de imagem. |
| MaxTagCount | Inteiro - O número máximo de etiquetas personalizadas necessárias para o plug-in. Tags personalizadas são tags diferentes das definidas em extsfns.h. |
Exemplos de arquivos de metadados
O arquivo de metadados a seguir descreve um plug-in interessado em analisar o código de verificação de bugs 0xE2. (Lembre-se de que a última linha deve terminar com um caractere de nova linha.)
PluginId MyPlugin
DebuggeeClass Kernel
BugCheckCode 0xE2
O ficheiro de metadados seguinte descreve um plug-in que está interessado em analisar verificações de erros 0x8, 0x9 e 0xA se MyDriver.sys for considerado o módulo culpado.
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 é o executável em execução do processo que está sendo analisado. Além disso, o plug-in pode criar até três tags 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 do depurador chamado dbgexts.dll. Este módulo de extensão implementa vários comandos de extensão do 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}
#
Ver também
Escrever um plug-in de extensão de análise para ampliar !analyze