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


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

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

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

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

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

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

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

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

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

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

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

смарт-клиент — это экземпляр отладочного движка, который выступает в роли хост-движка и подключен к серверу процессов. Метод ConnectProcessServer будет подключаться к серверу обработки. После подключения можно использовать методы, описанные в Live User-Mode Targets.

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

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