Utilisation du langage de balisage du débogueur

Les commandes de débogueur peuvent fournir une sortie en texte brut ou dans un format amélioré qui utilise le langage DML (Debugger Markup Language). La sortie améliorée avec DML inclut des liens sur lesquels vous pouvez cliquer pour exécuter des commandes associées.

DML est disponible dans Windows 10 et versions ultérieures.

Commandes compatibles DML

Les commandes suivantes sont capables de générer une sortie DML :

La commande lmD est un exemple de commande capable de fournir une sortie DML. La commande lmD affiche une liste de modules chargés. Comme le montre l’image suivante, chaque nom de module est un lien sur lequel vous pouvez cliquer pour obtenir des informations plus détaillées sur le module.

Capture d’écran de la sortie de la commande lmD dans le débogueur.

L’image suivante montre le résultat d’un clic sur le lien usbuhci . La sortie inclut des liens supplémentaires qui vous permettent d’explorer d’autres détails du module usbuhci.

Capture d’écran des détails du module usbuhci dans le débogueur.

Activation et désactivation de DML

La commande .prefer_dml active ou désactive DML. Lorsque DML est activé (.prefer_dml 1), les commandes capables de générer une sortie DML génèrent une sortie DML par défaut.

Améliorations apportées à la console

Tous les débogueurs Windows ont désormais des zones de sortie de commande qui prennent en charge l’analyse DML. Dans windbg, la fenêtre de commande prend en charge tous les comportements DML et affiche les couleurs, les styles de police et les liens. Les débogueurs de console, ntsd, cdb et kd, prennent uniquement en charge les attributs de couleur de DML, et le seul lors de l’exécution dans une console vraie avec le mode couleur activé. Les débogueurs avec des sessions d’E/S, ntsd -d ou remote.exe redirigées n’affichent aucune couleur.

Mode couleur du débogueur de console

Les débogueurs de console, ntsd, cdb et kd ont désormais la possibilité d’afficher une sortie en couleur lors de l’exécution dans une console vraie. Ce n’est pas la valeur par défaut. Le mode couleur doit être explicitement activé via tools.ini. Le nouveau jeton col_mode <true|false> dans tools.ini contrôle le paramètre de mode de couleur. Pour plus d’informations sur l’utilisation du fichier tools.ini, consultez Configuration de tools.ini

Lorsque le mode couleur est activé, le débogueur peut produire une sortie couleur. Par défaut, la plupart des couleurs ne sont pas définies et les couleurs de console actuelles sont définies par défaut.

Fenêtre Explorateur de commandes Windbg

Dans Windows 10 et versions ultérieures de Windbg, la fenêtre du navigateur de commandes analyse et affiche DML. Toutes les balises telles que <les modifications de lien>, <d’exécution> et d’apparence sont entièrement prises en charge.

Pour démarrer une session de navigateur de commandes à l’aide du menu dans WinDbg, sélectionnez Affichage, Explorateur de commandes. La commande> .browse <dans la fenêtre de commande ouvre une nouvelle fenêtre de navigateur de commandes et exécute la commande donnée. Pour plus d’informations, consultez Utilisation de la fenêtre Explorateur de commandes dans WinDbg (classique). Une nouvelle fenêtre d’explorateur de commandes peut également être ouverte avec Ctrl+N.

La fenêtre du navigateur de commandes imite délibérément le comportement d’un navigateur web, avec un historique de liste déroulante et des boutons précédent/suivant. La liste déroulante d’historique affiche uniquement les vingt dernières commandes, mais l’historique complet est conservé. En revenant dans les commandes, vous pouvez obtenir la liste déroulante pour afficher l’historique plus ancien.

Vous pouvez avoir autant de fenêtres de commande ouvertes à la fois que vous le souhaitez. Les fenêtres de commande sont conservées dans les espaces de travail, mais enregistrent uniquement la commande actuelle ; l’historique n’est pas conservé.

Le menu Affichage WinDbg comporte une option Définir la commande de démarrage du navigateur qui permet à un utilisateur de définir une commande par défaut pour les nouvelles fenêtres de navigateur, comme .dml_start. Cette commande est enregistrée dans les espaces de travail.

Une sous-fenêtre Commandes récentes est disponible dans le menu Affichage pour contenir les commandes intéressantes. La sélection d’une commande récente ouvre un nouveau navigateur avec la commande donnée. Il existe un élément de menu dans le menu contextuel de la fenêtre de navigateur qui ajoute la commande actuelle de la fenêtre à la liste des commandes récentes. La liste des commandes récentes est conservée dans les espaces de travail.

La fenêtre de l’explorateur de commandes exécute la commande de manière synchrone et n’affiche donc pas la sortie tant que la commande n’est pas terminée. Les commandes de longue durée n’affichent rien tant qu’elles ne sont pas terminées.

Les liens ont un menu contextuel avec clic droit similaire au menu contextuel contextuel dans un navigateur web. Les liens peuvent être ouverts dans une nouvelle fenêtre de navigateur. La commande d’un lien peut être copiée dans le Presse-papiers pour une utilisation.

Cliquez sur l’icône en haut à droite de la barre de titre pour définir les fenêtres de l’explorateur de commandes sur actualisation automatique ou actualisation manuelle. Les navigateurs d’actualisation automatique réexécutent automatiquement leur commande lors des changements d’état du débogueur. Cela permet de maintenir la sortie active, mais au prix de l’exécution de la commande sur toutes les modifications. L’actualisation automatique est activée par défaut. Si le navigateur n’a pas besoin d’être actif, le menu contextuel de la fenêtre peut être utilisé pour désactiver l’actualisation automatique.

Étant donné que les commandes sont exécutées par le moteur, et non par l’interface utilisateur, les commandes spécifiques à l’interface utilisateur, telles que .cls (Effacer l’écran), retournent une erreur de syntaxe dans lorsqu’elles sont utilisées dans les fenêtres de l’explorateur de commandes. Cela signifie également que lorsque l’interface utilisateur est un client distant, la commande est exécutée par le serveur, et non par le client, et la sortie de la commande affiche l’état du serveur.

Les fenêtres de l’explorateur de commandes peuvent exécuter n’importe quelle commande de débogueur. Il n’est pas nécessaire qu’il s’agit d’une commande qui produit DML. Vous pouvez utiliser des fenêtres de navigateur pour avoir un ensemble arbitraire de commandes actives.

Personnalisation de DML

DML définit un petit ensemble de balises qui peuvent être incluses dans la sortie de commande. La balise de lien> en est un <exemple. Vous pouvez tester la <balise de lien> (et d’autres balises DML) à l’aide des commandes .dml_start et .browse . La commande .browse .dml_startfilepath exécute les commandes stockées dans un fichier DML. La sortie s’affiche dans la fenêtre Explorateur de commandes au lieu de la fenêtre de commande standard.

Supposons que le fichier c:\DmlExperiment.txt contienne les lignes suivantes.

My DML Experiment
<link cmd="lmD musb*">List modules that begin with usb.</link>

La commande suivante affiche le texte et le lien dans la fenêtre Explorateur de commandes.

.browse .dml_start c:\Dml_Experiment.txt

Capture d’écran de la sortie du fichier DML dans la fenêtre Explorateur de commandes.

Si vous cliquez sur le lien Lister les modules qui commencent par usb , vous voyez une sortie similaire à l’image suivante.

Capture d’écran de la liste des modules après avoir cliqué sur le lien dans la sortie du fichier DML.

Pour une présentation approfondie de la personnalisation DML et une liste complète des balises DML, consultez Personnalisation de la sortie du débogueur à l’aide de DML.