Using Debugger Markup Language
Debugger commands can provide output in plain text or in an enhanced format that uses Debugger Markup Language (DML). Output that is enhanced with DML includes links that you can click to execute related commands.
The lmD command is an example of a command that is capable of providing DML output. The lmD command displays a list of loaded modules. As the following image shows, each module name is a link that you can click to get more detailed information about the module.
The following image shows the result of clicking the usbuhci link. The output includes additional links that enable you to explore further details of the usbuhci module.
DML defines a small set of tags that can be included in command output. One example is the <link> tag. You can experiment with the <link> tag (and other DML tags) by using the .dml_start and .browse commands. The command .browse .dml_start filepath executes the commands stored in a DML file. The output is displayed in the Command Browser window instead of the regular command window.
Suppose the file c:\DmlExperiment.txt contains the following lines.
The following command displays the text and link in the Command Browser window.
If you click the List modules that begin with usb link, you see output similar to the following image.
The following commands (and one token) are capable of generating DML output:
The .prefer_dml command turns DML on or off. When DML is turned on, commands that are capable of generating DML output will generate DML output by default.
For a thorough discussion of DML and a complete list of DML tags, see dml.doc in the installation folder for Debugging Tools for Windows.
Starting in Windows 10 right-click behavior is available in DML. This sample shows how to define right click behavior using <altlink> to send a breakpoint bp (Set Breakpoint) command and send the u (Unassemble) with a regular click.
<link cmd="u MyProgram!memcpy"> <altlink name="Set Breakpoint (bp)" cmd="bp MyProgram!memcpy" /> u MyProgram!memcpy </link>