Compartir a través de


Uso de comandos de extensión del depurador

El uso de comandos de extensión del depurador es muy similar al uso de comandos del depurador. El comando se escribe en la ventana Comando del depurador, lo que genera una salida en esta ventana o un cambio en la aplicación de destino o en el equipo de destino.

Un comando de extensión del depurador real es un punto de entrada en un archivo DLL llamado por el depurador.

Las extensiones del depurador se invocan mediante la sintaxis siguiente:

! [module.]extension[arguments]

El nombre del módulo no debe seguirse con la extensión de nombre de archivo .dll. Si el módulo incluye una ruta de acceso completa, el límite de tamaño de cadena predeterminado es de 255 caracteres.

Si el módulo aún no se ha cargado, se cargará en el depurador mediante una llamada a LoadLibrary(module). Una vez que el depurador ha cargado la biblioteca de extensiones, llama a la función GetProcAddress para buscar el nombre de la extensión en el módulo de extensión. El nombre de la extensión distingue mayúsculas de minúsculas y debe escribirse exactamente como aparece en el archivo .def del módulo de extensión. Si se encuentra la dirección de extensión, se llama a la extensión.

Orden de búsqueda

Si no se especifica el nombre del módulo, el depurador buscará los módulos de extensión cargados para esta exportación.

El orden de búsqueda predeterminado es el siguiente:

  1. Los módulos de extensión que funcionan con todos los sistemas operativos y en ambos modos: Dbghelp.dll y winext\ext.dll.

  2. El módulo de extensión que funciona en todos los modos, pero es específico del sistema operativo. Para Windows XP y versiones posteriores de Windows, se winxp\exts.dll.

  3. Módulo de extensión que funciona con todos los sistemas operativos, pero es específico del modo. Para el modo kernel, se winext\kext.dll. Para el modo de usuario, se winext\uext.dll.

  4. Módulo de extensión que es específico del sistema operativo y específico del modo. En la tabla siguiente se especifica este módulo.

Modo de usuario Modo kernel
winxp \ ntsdexts.dll winxp \ kdexts.dll

Cuando se descarga un módulo de extensión, se quita de la cadena de búsqueda. Cuando se carga un módulo de extensión, se agrega al principio del orden de búsqueda. El comando .setdll (Set Default Extension DLL) se puede usar para promover cualquier módulo a la parte superior de la cadena de búsqueda. Al usar este comando repetidamente, puede controlar completamente la cadena de búsqueda.

Use el comando .chain (List Debugger Extensions) para mostrar una lista de todos los módulos de extensión cargados en su orden de búsqueda actual.

Si intenta ejecutar un comando de extensión que no está en ninguno de los módulos de extensión cargados, recibirá un mensaje de error Exportar no encontrado.