Uso del lenguaje de marcado del depurador
Los comandos del depurador pueden proporcionar salida en texto sin formato o en un formato mejorado que usa el lenguaje de marcado del depurador (DML). La salida mejorada con DML incluye vínculos que puede hacer clic para ejecutar comandos relacionados.
DML está disponible en Windows 10 y versiones posteriores.
Comandos compatibles con DML
Los siguientes comandos son capaces de generar la salida DML:
El comando lmD es un ejemplo de un comando que es capaz de proporcionar salida DML. El comando lmD muestra una lista de módulos cargados. Como se muestra en la imagen siguiente, cada nombre de módulo es un vínculo que puede hacer clic para obtener información más detallada sobre el módulo.
En la imagen siguiente se muestra el resultado de hacer clic en el vínculo usbuhci . La salida incluye vínculos adicionales que permiten explorar más detalles del módulo usbuhci.
Activar y desactivar DML
El comando .prefer_dml activa o desactiva DML. Cuando DML está activado (.prefer_dml 1), los comandos que son capaces de generar la salida DML generarán la salida DML de forma predeterminada.
Mejoras en la consola
Todos los depuradores de Windows ahora tienen áreas de salida de comandos que admiten el análisis de DML. En windbg, la ventana de comandos admite todo el comportamiento de DML y mostrará colores, estilos de fuente y vínculos. Los depuradores de consola, ntsd, cdb y kd solo admiten los atributos de color de DML y el único cuando se ejecuta en una consola verdadera con el modo de color habilitado. Los depuradores con E/S redirigido, ntsd –d o remote.exe sesiones no mostrarán ningún color.
Modo de color del depurador de consola
Los depuradores de consola, ntsd, cdb y kd ahora tienen la capacidad de mostrar la salida de color cuando se ejecuta en una consola verdadera. Esto no es el valor predeterminado, requiere que el modo de color se habilite explícitamente a través de tools.ini. El nuevo token col_mode <true|false> en tools.ini controla la configuración del modo de color. Para obtener más información sobre cómo trabajar con el archivo tools.ini, consulte Configuración de tools.ini
Cuando el modo de color está habilitado, el depurador puede generar una salida de color. De forma predeterminada, la mayoría de los colores no se establecen y, en su lugar, tienen como valor predeterminado los colores de la consola actual.
Ventana del explorador de comandos de Windbg
En Windows 10 y versiones posteriores, Windbg analiza la ventana del explorador de comandos y muestra DML. Todas las etiquetas, como <las modificaciones de vínculo>, <exec> y apariencia, son totalmente compatibles.
Para iniciar una sesión del explorador de comandos con el menú de WinDbg, seleccione Ver, Explorador de comandos. El comando> .browse <de la ventana de comandos abrirá una nueva ventana del explorador de comandos y ejecutará el comando especificado. Para obtener más información, vea Usar la ventana del explorador de comandos en WinDbg (clásico). También se puede abrir una nueva ventana del explorador de comandos con Ctrl+N.
La ventana del explorador de comandos imita deliberadamente el comportamiento de un explorador web, con un historial desplegable y botones anteriores o siguientes. La lista desplegable historial solo muestra los últimos veinte comandos, pero el historial completo se mantiene para volver a los comandos que puede obtener la lista desplegable para mostrar el historial anterior.
Puede tener tantas ventanas de comandos abiertas a la vez como quiera. Las ventanas de comandos persisten en áreas de trabajo, pero solo guardan el comando actual; la historia no se mantiene.
El menú Vista winDbg tiene una opción Set Browser Start Command (Establecer comando de inicio del explorador) que permite al usuario establecer un comando preferido para que las nuevas ventanas del explorador comiencen, como .dml_start. Este comando se guarda en áreas de trabajo.
Hay disponible una sub ventana Comandos recientes en el menú Ver para contener comandos de interés. Al seleccionar un comando reciente, se abre un nuevo explorador con el comando especificado. Hay un elemento de menú en el menú contextual de la ventana del explorador que agrega el comando actual de la ventana a la lista de comandos recientes. La lista de comandos recientes se conserva en áreas de trabajo.
La ventana del explorador de comandos ejecuta el comando de forma sincrónica y, por tanto, no muestra la salida hasta que se haya completado el comando. Los comandos de ejecución prolongada no mostrarán nada hasta que hayan terminado.
Los vínculos tienen un menú contextual con el botón derecho similar al menú contextual del botón derecho en un explorador web. Los vínculos se pueden abrir en una nueva ventana del explorador. El comando de un vínculo se puede copiar en el Portapapeles para su uso.
Haga clic en el icono situado cerca de la esquina superior derecha de la barra de título para establecer las ventanas del explorador de comandos en actualización automática o actualización manual. Los exploradores de actualización automática volverán a ejecutar automáticamente su comando en los cambios de estado del depurador. Esto mantiene la salida activa, pero a costa de ejecutar el comando en todos los cambios. La actualización automática está activada de forma predeterminada. Si el explorador no necesita estar activo, se puede usar el menú contextual de la ventana para deshabilitar la actualización automática.
Dado que el motor ejecuta comandos, no mediante la interfaz de usuario, comandos específicos de la interfaz de usuario, como .cls (Borrar pantalla), devolverá un error de sintaxis en cuando se use en las ventanas del explorador de comandos. También significa que cuando la interfaz de usuario es un cliente remoto, el servidor ejecutará el comando, no el cliente, y la salida del comando mostrará el estado del servidor.
Las ventanas del explorador de comandos pueden ejecutar cualquier comando del depurador, no tiene que ser un comando que genere DML. Puede usar ventanas del explorador para tener un conjunto arbitrario de comandos activos para su uso.
Personalización de DML
DML define un pequeño conjunto de etiquetas que se pueden incluir en la salida del comando. Un ejemplo es la etiqueta de <vínculo> . Puede experimentar con la <etiqueta de vínculo> (y otras etiquetas DML) mediante los comandos .dml_start y .browse. El comando .browse .dml_start filepath ejecuta los comandos almacenados en un archivo DML. La salida se muestra en la ventana Explorador de comandos en lugar de en la ventana de comandos normal.
Supongamos que el archivo c:\DmlExperiment.txt contiene las siguientes líneas.
My DML Experiment
<link cmd="lmD musb*">List modules that begin with usb.</link>
El siguiente comando muestra el texto y el vínculo en la ventana explorador de comandos.
.browse .dml_start c:\Dml_Experiment.txt
Si hace clic en los módulos de lista que comienzan con el vínculo usb , verá una salida similar a la siguiente imagen.
Para obtener una explicación exhaustiva de la personalización de DML y una lista completa de etiquetas DML, consulte Personalización de la salida del depurador mediante DML.