Utilisation du langage de balisage du débogueur

Les commandes du débogueur peuvent fournir une sortie en texte brut ou dans un format amélioré qui utilise le langage de balisage du débogueur (DML). La sortie améliorée avec DML inclut des liens que 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 la 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 l’illustre l’image suivante, chaque nom de module est un lien que vous pouvez cliquer pour obtenir des informations plus détaillées sur le module.

Capture d’écran de la sortie de 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 la 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 tout le comportement 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 véritable console avec le mode couleur activé. Les débogueurs avec des E/S redirigées, ntsd –d ou remote.exe sessions n’affichent aucune couleur.

Mode couleur du débogueur de la console

Les débogueurs de console, ntsd, cdb et kd ont désormais la possibilité d’afficher la sortie colorée lors de l’exécution dans une vraie console. Il ne s’agit pas de 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 colorée. Par défaut, la plupart des couleurs ne sont pas définies et par défaut sur les couleurs de la console actuelle.

Fenêtre du navigateur de commande Windbg

Dans Windows 10 et versions ultérieures, Windbg analyse la fenêtre du navigateur de commandes 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, Navigateur 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 navigateur de commandes dans WinDbg (classique). Une nouvelle fenêtre de navigateur 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 déroulant et des boutons précédents/suivants. La liste déroulante historique affiche uniquement les vingt dernières commandes, mais l’historique complet est conservé afin de revenir 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 persistent dans les espaces de travail, mais enregistrent uniquement la commande actuelle ; l’histoire n’est pas conservée.

Le menu Affichage WinDbg a une option Définir la commande de démarrage du navigateur qui permet à un utilisateur de définir une commande préférée pour que les nouvelles fenêtres de navigateur commencent par, telles que .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 active 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 du navigateur 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 n’ont pas terminé.

Les liens ont un menu contextuel avec le bouton droit de la souris semblable 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 à utiliser.

Cliquez sur l’icône en haut à droite de la barre de titre pour définir les fenêtres du navigateur de commandes sur l’actualisation automatique ou l’actualisation manuelle. Les navigateurs d’actualisation automatique réexécutent automatiquement leur commande sur les modifications d’état du débogueur. Cela permet de conserver la sortie en direct, mais au coût 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 (Clear Screen), retournent une erreur de syntaxe lorsqu’elles sont utilisées dans les fenêtres du navigateur 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 du navigateur de commandes peuvent exécuter n’importe quelle commande de débogueur, il n’est pas obligé d’être une commande qui produit DML. Vous pouvez utiliser des fenêtres de navigateur pour avoir un ensemble arbitraire de commandes actives pour une utilisation.

Personnalisation de DML

DML définit un petit ensemble de balises qui peuvent être incluses dans la sortie de commande. L’un des exemples est la balise de <lien> . Vous pouvez expérimenter l’étiquette de <lien (et d’autres balises DML) à l’aide des commandes .dml_start et .browse.> La commande .browse .dml_start filepath 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 normale.

Supposons que le fichier c :\DmlExperiment.txt contient 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 les modules List qui commencent par une liaison 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 discussion approfondie sur la personnalisation DML et une liste complète des balises DML, consultez Personnalisation de la sortie du débogueur à l’aide de DML.