Introducción al motor del depurador

En esta documentación se describe cómo usar el motor del depurador y cómo escribir extensiones que se ejecutarán en WinDbg, KD, CDB y NTSD. Estas extensiones del depurador se pueden usar al realizar la depuración en modo de usuario o en modo kernel en Microsoft Windows.

Motor del depurador

El motor del depurador proporciona una interfaz para examinar y manipular destinos de depuración en modo de usuario y modo kernel en Microsoft Windows.

El motor del depurador puede adquirir destinos, establecer puntos de interrupción, supervisar eventos, símbolos de consulta, leer y escribir memoria, y controlar subprocesos y procesos en un destino.

Puede usar el motor del depurador para escribir las bibliotecas de extensiones del depurador y las aplicaciones independientes. Estas aplicaciones son aplicaciones del motor de depurador. Una aplicación del motor de depurador que usa la funcionalidad completa del motor del depurador es un depurador. Por ejemplo, WinDbg, CDB, NTSD y KD son depuradores; El motor del depurador proporciona el núcleo de su funcionalidad.

La API del motor de depurador se especifica mediante los prototipos del archivo de encabezado dbgeng.h.

Documentación incompleta

Se trata de un documento preliminar y actualmente está incompleto.

Para muchos conceptos relacionados con los depuradores y el motor de depurador que aún no están documentados aquí, consulte la sección Técnicas de depuración de esta documentación.

Para obtener parte de la funcionalidad no documentada actualmente de la API del motor de depurador, use el método Execute para ejecutar comandos individuales del depurador.

Extensiones

Puede crear sus propios comandos de depuración escribiendo y compilando un archivo DLL de extensión. Por ejemplo, puede que desee escribir un comando de extensión para mostrar una estructura de datos compleja.

Hay tres tipos diferentes de archivos DLL de extensión del depurador:

  • Archivos DLL de extensión dbgEng. Se basan en los prototipos del archivo de encabezado dbgeng.h. Cada DLL de este tipo puede exportar comandos de extensión DbgEng. Estos comandos de extensión usan la API del motor de depurador y también pueden usar la API WdbgExts.

  • Archivos DLL de extensión EngExtCpp. Se basan en los prototipos de los archivos de encabezado engextcpp.h y dbgeng.h. Cada DLL de este tipo puede exportar comandos de extensión DbgEng. Estos comandos de extensión usan la API del motor de depurador y el marco de extensión EngExtCpp, y también pueden usar la API WdbgExts.

  • Archivos DLL de extensión WdbgExts. Se basan en los prototipos del archivo de encabezado wdbgexts.h. Cada DLL de este tipo exporta uno o varios comandos de extensión WdbgExts. Estos comandos de extensión usan exclusivamente la API WdbgExts.

La API de DbgEng se puede usar para crear extensiones o aplicaciones independientes. La API WdbgExts contiene un subconjunto de la funcionalidad de la API del motor de depurador y solo las extensiones pueden usarse.

Todas las extensiones del depurador deben compilarse y compilarse mediante la utilidad Build. La utilidad Build se incluye en el Kit de controladores de Windows (WDK).

Los ejemplos de código de extensión se instalan como parte del paquete Herramientas de depuración para Windows si realiza una instalación personalizada y selecciona el componente sdk y todos sus subcomponentes. Se pueden encontrar en el subdirectorio sdk\samples del directorio de instalación herramientas de depuración para Windows.

La manera más fácil de escribir nuevas extensiones del depurador es estudiar las extensiones de ejemplo. Cada extensión de ejemplo incluye archivos makefile y sources para su uso con la utilidad Build. Ambos tipos de extensiones se representan en los ejemplos.

Escritura de extensiones del depurador de análisis personalizado

Puede ampliar las funcionalidades del comando !analyze debugger escribiendo un complemento de extensión de análisis. Al proporcionar un complemento de extensión de análisis, puede participar en el análisis de una comprobación de errores o una excepción de una manera específica de su propio componente o aplicación. Al escribir un complemento de extensión de análisis, también escribe un archivo de metadatos que describe las situaciones en las que desea que se llame al complemento. Cuando se ejecuta !analyze , localiza, carga y ejecuta los complementos de extensión de análisis adecuados. Para obtener más información, consulte Escritura de extensiones de depurador de análisis personalizados.

Personalización de la salida del depurador mediante DML

Puede personalizar la salida del depurador mediante DML. Para obtener más información, consulte Personalización de la salida del depurador mediante DML.

Uso de JavaScript para ampliar las funcionalidades del depurador

Use JavaScript para crear scripts que comprendan los objetos del depurador y amplíen y personalicen las funcionalidades del depurador. Los proveedores de JavaScript puenten un lenguaje de scripting al modelo de objetos interno del depurador. El proveedor de scripting del depurador de JavaScript permite el uso de JavaScript con el depurador. Para obtener más información, consulte Scripting del depurador de JavaScript.