Archivos de metadatos para complementos de extensión de análisis
Al escribir un complemento de extensión de análisis, también se escribe un archivo de metadatos que describe las situaciones en las que desea que se llame al complemento. Cuando se ejecuta el comando !analyze debugger, usa archivos de metadatos para determinar qué complementos se van a cargar.
Cree un archivo de metadatos que tenga el mismo nombre que el complemento de extensión de análisis y una extensión de .alz. Por ejemplo, si el complemento de extensión de análisis se denomina MyAnalyzer.dll, el archivo de metadatos debe denominarse MyAnalyzer.alz. Coloque el archivo de metadatos en el mismo directorio que el complemento de extensión de análisis.
Un archivo de metadatos para un complemento de extensión de análisis es un archivo de texto ASCII que contiene pares clave-valor. Las claves y los valores están separados por espacios en blanco. Una tecla puede tener cualquier carácter que no sea de espacio en blanco. Las claves no distinguen mayúsculas de minúsculas.
Después de la clave y el siguiente espacio en blanco, comienza el valor correspondiente. Un valor puede tener uno de los siguientes formularios.
Cualquier conjunto de caracteres al final de la línea. Este formulario funciona para los valores que no contienen caracteres de nueva línea.
Importante Si el último valor del archivo de metadatos tiene un valor de este formulario, la línea debe terminar con un carácter de nueva línea.
Cualquier conjunto de caracteres entre llaves { }. El formulario funciona para los valores que contienen caracteres de nueva línea.
Una línea que comienza por # es un comentario y se omite. Los comentarios solo pueden iniciar dónde se esperan las claves.
Puede usar las siguientes claves en un archivo de metadatos.
Clave | Descripción |
---|---|
PluginId | Cadena: identifica el complemento. |
DebuggeeClass | Cadena: los valores posibles son "Kernel" y "User". Indica que el complemento está interesado en analizar solo errores en modo kernel o solo errores en modo de usuario. |
BugCheckCode | Código de comprobación de errores de 32 bits: indica que el complemento está interesado en analizar este código de comprobación de errores. Un único archivo de metadatos puede especificar varios códigos de comprobación de errores. |
ExceptionCode | Código de excepción de 32 bits: indica que el complemento está interesado en analizar este código de excepción. Un único archivo de metadatos puede especificar varios códigos de excepción. |
ExecutableName | Cadena: indica que el complemento solo está interesado en las sesiones en las que se trata del ejecutable en ejecución del proceso que se va a analizar. Un único archivo de metadatos puede especificar varios nombres ejecutables. |
ImageName | String: indica que el complemento solo está interesado en las sesiones en las que el análisis predeterminado considera que esta imagen (dll, sys o exe) es errónea. El complemento se invoca después de que el análisis haya determinado qué imagen está en error. Un único archivo de metadatos puede especificar varios nombres de imagen. |
MaxTagCount | Entero: el número máximo de etiquetas personalizadas que necesita el complemento. Las etiquetas personalizadas son etiquetas distintas de las definidas en extsfns.h. |
Archivos de metadatos de ejemplo
En el siguiente archivo de metadatos se describe un complemento que está interesado en analizar el código de comprobación de errores 0xE2. (Recuerde que la última línea debe terminar con un carácter de nueva línea).
PluginId MyPlugin
DebuggeeClass Kernel
BugCheckCode 0xE2
En el siguiente archivo de metadatos se describe un complemento que está interesado en analizar las comprobaciones de errores 0x8, 0x9 y 0xA si MyDriver.sys se considera que es el módulo en caso de error.
PluginId MyPlugin
DebuggeeClass Kernel
BugCheckCode 0x8
BugCheckCode 0x9
BugCheckCode 0xA
ImageName MyDriver.sys
En el siguiente archivo de metadatos se describe un complemento que está interesado en analizar el código de excepción 0xC0000005 si MyApp.exe es el ejecutable en ejecución del proceso que se está analizando. Además, el complemento puede crear hasta tres etiquetas personalizadas.
PluginId MyPlugin
DebuggeeClass User
ExceptionCode 0xC0000005
ExecutableName MyApp.exe
Herramientas de depuración para Windows tiene un ejemplo que puede usar para compilar un módulo de extensión del depurador denominado dbgexts.dll. Este módulo de extensión implementa varios comandos de extensión del depurador, pero también puede servir como complemento de extensión de análisis; es decir, exporta una función _EFN_Analyze . Este es un archivo de metadatos que describe dbgexts.dll como complemento de extensión de análisis.
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}
#
Consulte también
Escribir un complemento de extensión de análisis para ampliar !analyze