Использование языка разметки отладчика

Команды отладчика могут предоставлять выходные данные в виде обычного текста или в расширенном формате, который использует язык разметки отладчика (DML). Выходные данные, улучшенные с помощью DML, включают ссылки, которые можно щелкнуть для выполнения связанных команд.

DML доступен в Windows 10 и более поздних версиях.

Команды с поддержкой DML

Следующие команды могут создавать выходные данные DML:

Команда lmD является примером команды, которая может предоставлять выходные данные DML. Команда lmD отображает список загруженных модулей. Как показано на следующем рисунке, каждое имя модуля — это ссылка, которую можно щелкнуть, чтобы получить более подробные сведения о модуле.

Снимок экрана: выходные данные команды lmD в отладчике.

На следующем рисунке показан результат щелчка по ссылке usbuhci . Выходные данные содержат дополнительные ссылки, позволяющие изучить дополнительные сведения о модуле usbuhci.

Снимок экрана: сведения о модуле usbuhci в отладчике.

Включение и отключение DML

Команда .prefer_dml включает или отключает DML. Если DML включен (.prefer_dml 1), команды, способные создавать выходные данные DML, по умолчанию будут создавать выходные данные DML.

Улучшения консоли

Все отладчики Windows теперь имеют области вывода команд, которые поддерживают синтаксический анализ DML. В windbg командное окно поддерживает все поведение DML и отображает цвета, стили шрифтов и ссылки. Отладчики консоли, ntsd, cdb и kd, поддерживают только атрибуты цвета DML и только при выполнении в истинной консоли с включенным цветовым режимом. Отладчики с перенаправленными сеансами ввода-вывода, ntsd –d или remote.exe не будут отображать цвета.

Цветовой режим отладчика консоли

Отладчики консоли, ntsd, cdb и kd теперь могут отображать цветные выходные данные при запуске в консоли true. Это значение не используется по умолчанию. Для этого требуется явно включить цветовой режим с помощью tools.ini. Новый col_mode <маркер true|false> в tools.ini управляет настройкой цветового режима. Дополнительные сведения о работе с файлом tools.ini см. в разделе Настройка tools.ini

Если цветовой режим включен, отладчик может создавать цветные выходные данные. По умолчанию большинство цветов не задано, вместо этого по умолчанию используются текущие цвета консоли.

Окно обозревателя команд Windbg

В Windows 10 и более поздних версиях Windbg окно командного браузера анализирует и отображает DML. Все теги, такие как <link>, <exec> и изменения внешнего вида, полностью поддерживаются.

Чтобы запустить сеанс командного браузера с помощью меню в WinDbg, выберите Вид, Обозреватель команд. Команда> .browse <в командном окне откроет новое окно командного браузера и выполнит указанную команду. Дополнительные сведения см. в разделе Использование окна командного браузера в WinDbg (классическая модель). Новое окно командного браузера также можно открыть с помощью клавиш CTRL+N.

Окно командного браузера намеренно имитирует поведение веб-браузера с помощью раскрывающегося журнала и кнопок "Назад"/"Далее". В раскрывающемся списке журнала отображаются только последние двадцать команд, но сохраняется полный журнал, поэтому, вернувшись в команды, можно получить раскрывающийся список для отображения старого журнала.

Одновременно можно открыть столько командных окон, сколько угодно. Окна команд сохраняются в рабочих областях, но сохраняют только текущую команду; история не хранится.

Меню Представление WinDbg содержит параметр Задать команду запуска браузера , которая позволяет пользователю задать предпочтительную команду для запуска новых окон браузера, таких как .dml_start. Эта команда сохраняется в рабочих областях.

В меню Вид доступно вложенное окно Последние команды для хранения интересующих команд. При выборе последней команды открывается новый браузер с указанной командой. В контекстном меню окна браузера есть пункт меню, который добавляет текущую команду окна в список последних команд. Список последних команд сохраняется в рабочих областях.

Окно командного браузера выполняет команду синхронно и поэтому не отображает выходные данные до завершения команды. Длительные команды не будут отображать ничего, пока они не будут завершены.

В контекстном меню ссылок есть контекстное меню, аналогичное контекстное меню в веб-браузере. Ссылки можно открыть в новом окне браузера. Команду ссылки можно скопировать в буфер обмена для использования.

Щелкните значок в правом верхнем углу заголовка окна, чтобы настроить автоматическое или ручное обновление в окнах браузера. Браузеры автоматического обновления автоматически повторно выполняют команду при изменении состояния отладчика. При этом выходные данные сохраняются в реальном времени, но за счет выполнения команды при всех изменениях. Автоматическое обновление включено по умолчанию. Если браузер не должен быть динамическим, можно использовать контекстное меню окна, чтобы отключить автоматическое обновление.

Так как команды выполняются подсистемой, а не пользовательским интерфейсом, команды пользовательского интерфейса, такие как .cls (Clear Screen), возвращают синтаксическую ошибку в при использовании в окнах командного браузера. Это также означает, что если пользовательский интерфейс является удаленным клиентом, команда будет выполняться сервером, а не клиентом, а выходные данные команды будут отображать состояние сервера.

Окна командного браузера могут выполнять любую команду отладчика. Это не обязательно должна быть команда, которая создает DML. В окнах браузера можно использовать произвольный набор команд, активных для использования.

Настройка DML

DML определяет небольшой набор тегов, которые можно включить в выходные данные команды. Одним из примеров <является тег ссылки> . Вы можете поэкспериментировать с <тегом ссылки> (и другими тегами DML) с помощью команд .dml_start и .browse . Команда .browse .dml_startfilepath выполняет команды, хранящиеся в DML-файле. Выходные данные отображаются в окне обозревателя команд , а не в обычном командном окне.

Предположим, c:\DmlExperiment.txt файла содержит следующие строки.

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

Следующая команда отображает текст и ссылку в окне обозревателя команд.

.browse .dml_start c:\Dml_Experiment.txt

Снимок экрана: выходные данные DML-файла в окне обозревателя команд.

Если щелкнуть ссылку Список модулей, которые начинаются с usb , вы увидите выходные данные, аналогичные приведенному на следующем рисунке.

Снимок экрана: список модулей после щелчка по ссылке в выходных данных DML-файла.

Подробное описание настройки DML и полный список тегов DML см. в разделе Настройка выходных данных отладчика с помощью DML.