API-интерфейсы расширения программирования отладчика
Этот раздел состоит из следующих частей.
Общие сведения о обработчике отладчика
Использование API обработчика отладчика
Настройка выходных данных отладчика с помощью 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.