Поделиться через


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

Команды отладчика могут предоставлять выходные данные в виде обычного текста или в расширенном формате, использующего язык разметки отладчика (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 теперь могут отображать цветные выходные данные при выполнении в истинной консоли. Это не по умолчанию, он требует явного включения цветового режима с помощью tools.ini. Новый col_mode <true|false> токен в tools.ini управляет параметром цветового режима. Дополнительные сведения о работе с файлом tools.ini см. в разделе "Настройка tools.ini

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

Окно браузера команд Windbg

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

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

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

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

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

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

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

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

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

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

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

Настройка DML

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