Удаленные целевые объекты

Существует две различные формы удаленной отладки в зависимости от того, какой компьютер (удаленный клиент или сервер) является главным компьютером. Главный компьютер — это компьютер, на котором активна подсистема отладчика . На другом компьютере подсистема отладчика просто выступает в качестве прокси-сервера, выполняющего ретрансляцию команд и данных в подсистему узла.

Все операции отладчика, такие как выполнение команд и расширений и загрузка символов, выполняются подсистемой узла. Сеанс отладчика также относится к ядру узла.

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

Отладка серверов и клиентов

Сервер отладки — это экземпляр подсистемы отладчика, выполняющий роль узла и прослушивающий подключения от клиентов отладки. Метод StartServer сообщает обработчику отладчика начать прослушивание подключений от клиентов отладки.

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

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

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

Серверы обработки, серверы подключения ядра и интеллектуальные клиенты

Серверы обработки и серверы подключения к ядру — это экземпляры подсистемы отладчика, выступающие в качестве прокси-серверов, прослушивающие подключения от интеллектуальных клиентов и выполняющие операции с памятью, процессором или операционной системой в соответствии с запросами этих удаленных клиентов. Сервер обработки упрощает отладку процессов, выполняемых на том же компьютере. Сервер подключения ядра упрощает отладку целевого объекта отладки ядра Windows, подключенного к компьютеру, на котором запущен сервер подключения. Сервер обработки можно запустить с помощью метода StartProcessServer или программы DbgSrv. Метод WaitForProcessServerEnd будет ожидать завершения сервера обработки, запущенного с StartProcessServer . Сервер подключения к ядру можно активировать с помощью программы KdSrv.

Интеллектуальный клиент — это экземпляр подсистемы отладчика, выполняющий роль подсистемы узла и подключенный к серверу обработки. Метод ConnectProcessServer подключается к серверу обработки. После подключения можно использовать методы, описанные в разделе Целевые объекты live User-Mode .

После завершения работы удаленного клиента с сервером обработки он может отключиться с помощью DisconnectProcessServer или использовать EndProcessServer , чтобы запросить завершение работы сервера обработки. Чтобы завершить работу сервера обработки с компьютера, на котором он работает, используйте диспетчер задач для завершения процесса. Если экземпляр обработчика отладчика, который использовал StartProcessServer , по-прежнему работает, он может использовать команду Execute для выполнения команды отладчика .endsrv 0, которая завершит работу сервера обработки (это исключение из обычного поведения .endsrv, которое обычно не влияет на серверы обработки).

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