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


API-интерфейсы расширения программирования отладчика

Этот раздел состоит из следующих частей.

Общие сведения о обработчике отладчика

Использование API обработчика отладчика

Написание расширений DbgEng

Расширения EngExtCpp

Написание расширений WdbgExts

Настройка выходных данных отладчика с помощью DML

Использование JavaScript для расширения возможностей отладчика

Разработка модулей расширяемости транспорта KDNET

В этой документации описывается использование интерфейсов, таких как интерфейсы, предоставляемые модулем отладчика, для написания расширений, которые будут выполняться в WinDbg, KD, CDB и NTSD. Эти расширения отладчика можно использовать при отладке в пользовательском или режиме ядра.

Обработчик отладчика

Подсистема отладчика предоставляет интерфейс для проверки целевых объектов отладки и управления ими в пользовательском режиме и режиме ядра.

Подсистема отладчика может получать целевые объекты, устанавливать точки останова, отслеживать события, символы запросов, считывать и записывать память, а также управлять потоками и процессами в целевом объекте.

Модуль отладчика можно использовать для написания библиотек расширений отладчика и автономных приложений. Такие приложения являются приложениями обработчика отладчика. Приложение обработчика отладчика, использующее все функциональные возможности подсистемы отладчика, является отладчиком. Например, WinDbg, CDB, NTSD и KD являются отладчиками; подсистема отладчика предоставляет ядро их функциональных возможностей.

API обработчика отладчика задается прототипами в файле заголовка dbgeng.h.

Дополнительные сведения см. в разделах Общие сведения об отладчике и Использование API обработчика отладчика.

Расширения

Вы можете создать собственные команды отладки, написав и создав библиотеку DLL расширения. Например, может потребоваться написать команду расширения для отображения сложной структуры данных.

Существует три разных типа библиотек DLL расширения отладчика:

  • Библиотеки DLL расширения DbgEng. Они основаны на прототипах в файле заголовка dbgeng.h. Каждая библиотека DLL этого типа может экспортировать команды расширения DbgEng. Эти команды расширения используют API обработчика отладчика, а также API WdbgExts.

    Дополнительные сведения см. в статье Написание расширений DbgEng.

  • Библиотеки DLL расширения EngExtCpp. Они основаны на прототипах в файлах заголовков engextcpp.h и dbgeng.h. Каждая библиотека DLL этого типа может экспортировать команды расширения DbgEng. Эти команды расширения используют API обработчика отладчика и платформу расширений EngExtCpp, а также могут использовать API WdbgExts.

  • Библиотеки DLL расширения WdbgExts. Они основаны на прототипах в файле заголовка wdbgexts.h. Каждая библиотека DLL этого типа экспортирует одну или несколько команд расширения WdbgExts. Эти команды расширения используют исключительно API WdbgExts. Дополнительные сведения см. в статье Написание расширений WdbgExts.

API DbgEng можно использовать для создания расширений или автономных приложений. API WdbgExts содержит подмножество функций API обработчика отладчика и может использоваться только расширениями.

Все расширения отладчика должны быть скомпилированы и созданы с помощью Visual Studio.

Примеры кода расширения устанавливаются как часть пакета средств отладки для Windows, если вы выполняете пользовательскую установку и выбираете компонент SDK и все его подкомпоненты. Их можно найти в подкаталоге sdk\samples каталога установки Средств отладки для Windows.

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

Написание расширений пользовательского отладчика анализа

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

Настройка выходных данных отладчика с помощью DML

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

Использование JavaScript для расширения возможностей отладчика

Используйте JavaScript для создания скриптов, которые понимают объекты отладчика, а также расширяют и настраивают возможности отладчика. Поставщики JavaScript связывание языка сценариев с внутренней объектной моделью отладчика. Поставщик скриптов отладчика JavaScript позволяет использовать JavaScript с отладчиком. Дополнительные сведения см. в разделе Скрипты отладчика JavaScript.

Разработка модулей расширяемости транспорта KDNET

Транспорт KDNET можно расширить для запуска на любом оборудовании с помощью отдельной библиотеки dll модуля расширяемости драйвера оборудования. Модули расширяемости транспорта KDNET разрабатываются поставщиками сетевых карта для добавления поддержки отладки ядра в определенные сетевые карты.

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