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


Клиентские объекты

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

Основные клиенты

Основной клиент — это клиент, присоединенный к текущему сеансу отладки. Изначально при создании нового клиентского объекта он не является основным клиентом. Клиент становится основным клиентом при получении целевого объекта (например, путем вызова CreateProcess2) или подключения к сеансу отладки с помощью ConnectSession. Команда отладчика .client содержит только первичные клиенты.

Объекты обратного вызова

Объекты обратного вызова можно зарегистрировать в каждом клиенте. Существует три типа объектов обратного вызова:

  1. Входные объекты обратного вызова (или обратные вызовы ввода): подсистема вызывает обратные вызовы ввода для запроса входных данных. Например, отладчик с окном консоли может зарегистрировать обратный вызов ввода, чтобы предоставить обработчику входные данные от пользователя, или отладчик может зарегистрировать обратный вызов ввода, чтобы предоставить подсистеме входные данные из файла.

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

  3. Объекты обратного вызова событий (или обратные вызовы событий): подсистема вызывает обратные вызовы событий всякий раз, когда событие происходит в целевом объекте (или происходит изменение состояния обработчика). Например, библиотека расширений отладчика может зарегистрировать обратный вызов события для отслеживания определенных событий или выполнения автоматических действий при возникновении определенного события.

Удаленная отладка

Клиентские объекты облегчают взаимодействие с удалёнными экземплярами хост-движка. Функция DebugConnect создает объект клиента, подключенный к экземпляру удаленного двигателя; методы, вызываемые этим клиентом, выполняются удаленным двигателем, а объекты обратного вызова, зарегистрированные локально с помощью клиента, будут вызываться при вызове обратного вызова удаленным двигателем.

дополнительные сведения

Дополнительные сведения о создании и использовании клиентских объектов см. в разделе "Использование объектов обратного вызова". Дополнительные сведения о регистрации объектов обратного вызова см. в разделе "Использование объектов обратного вызова".