Zdalne obiekty docelowe
Istnieją dwie różne formy zdalnego debugowania, w zależności od tego, który komputer (klient zdalny lub serwer) jest komputerem hosta. Komputer hostujący jest komputerem, na którym aktywny jest silnik debugera . Na innym komputerze silnik debugera działa jedynie jako serwer proxy, przekazując polecenia i dane do głównego silnika.
Wszystkie operacje debugera, takie jak wykonywanie poleceń, rozszerzenia ioraz ładowanie symboli, są realizowane przez aparat hosta. Sesja debugera jest również związana z aparatem hosta.
Aby wyświetlić listę serwerów debugowania i serwerów przetwarzania aktualnie uruchomionych na komputerze, użyj OutputServers.
Debugowanie serwerów i debugowanie klientów
serwer debugowania jest instancją aparatu debugera działającego jako host i nasłuchującego połączeń od klientów debugowania. Metoda StartServer poinformuje silnik debugowania o rozpoczęciu nasłuchiwania połączeń od klientów do debugowania.
Klient debugowania jest instancją aparatu debugera działającą jako proxy, wysyłającą polecenia debugera oraz operacje we/wy do serwera debugowania. Funkcja DebugConnect może służyć do nawiązywania połączenia z serwerem debugowania.
Obiekt klienta zwrócony przez DebugConnect nie jest automatycznie przyłączony do sesji debugera na serwerze debugowania. Metoda ConnectSession może służyć do łączenia sesji, synchronizowania danych wejściowych i wyjściowych.
Komunikacja między serwerem debugowania a klientem debugowania obejmuje głównie polecenia debugera i wywołania RPC wysyłane do serwera, a dane wyjściowe polecenia wysyłane z powrotem do klienta.
Serwery przetwarzania, serwery połączeń jądra i klienci inteligentni
Serwery przetwarzania i serwery połączeń jądra są wystąpieniami aparatu debugera działającego jako serwery proxy, nasłuchujące połączeń od inteligentnych klientów i wykonujące operacje pamięci, procesora lub systemu operacyjnego zgodnie z żądaniami tych zdalnych klientów. Serwer przetwarzania ułatwia debugowanie procesów uruchomionych na tym samym komputerze. Serwer połączeń jądra ułatwia debugowanie celu debugowania jądra systemu Windows, który jest podłączony do komputera uruchamiającego serwer połączeń. Serwer przetwarzania można uruchomić przy użyciu metody interfejsu API StartProcessServer lub programu DbgSrv. Metoda WaitForProcessServerEnd będzie czekać na zakończenie serwera procesów uruchomionego za pomocą StartProcessServer. Serwer połączenia jądra można aktywować przy użyciu programu KdSrv.
inteligentny klient to wystąpienie silnika debugera pełniącego rolę silnika hosta i połączonego z serwerem procesów. Metoda ConnectProcessServer nawiąże połączenie z serwerem przetwarzania. Po nawiązaniu połączenia można użyć metod opisanych w Live User-Mode Targets.
Po zakończeniu pracy klienta zdalnego z serwerem przetwarzania może on odłączyć się przy użyciu DisconnectProcessServerlub może użyć EndProcessServer, aby zażądać zamknięcia serwera przetwarzania. Aby zamknąć serwer przetwarzania z komputera, na którym jest uruchomiony, użyj Menedżera zadań, aby zakończyć proces. Jeśli wystąpienie aparatury debugera, które używało StartProcessServer, jest nadal uruchomione, może użyć Execute, aby wydać polecenie debugera .endsrv 0, co spowoduje zakończenie serwera procesu (stanowi to wyjątek od typowego działania polecenia .endsrv, które ogólnie nie ma wpływu na serwery procesów).
Komunikacja między serwerem przetwarzania a klientem inteligentnym zwykle składa się z operacji niskiego poziomu pamięci, procesora i systemu operacyjnego oraz żądań wysyłanych z klienta zdalnego do serwera. Ich wyniki są następnie wysyłane z powrotem do klienta.