Wybieranie najlepszej metody debugowania zdalnego
Istnieją dwie podstawowe metody przeprowadzania zdalnego debugowania, a także kilka dodatkowych metod i ogromna liczba metod kombinacji.
Poniżej przedstawiono kilka wskazówek, które pomogą Ci wybrać najlepszą technikę.
Debugowanie zdalne za pośrednictwem debugera jest zwykle najlepszą metodą. Jeśli po prostu masz jeden serwer i jednego klienta i mogą swobodnie łączyć się ze sobą, te same pliki binarne debugera są instalowane zarówno na kliencie, jak i serwerze, a technik debugowania, który będzie obsługiwał klienta, będzie mógł komunikować się z kimś w pokoju z serwerem, jest to zalecana metoda.
Klient i serwer mogą mieć dowolną wersję systemu Windows. Nie muszą uruchamiać tej samej wersji, co inni.
Jeśli klient nie może wysłać żądania połączenia do serwera, ale serwer może wysłać żądanie do klienta, możesz użyć zdalnego debugowania za pomocą debugera z odwrotnego połączenia przy użyciu parametru clicon.
zdalne debugowanie za pośrednictwem remote.exe służy do zdalnego sterowania oknem wiersza polecenia. Może służyć do zdalnego sterowania KD, CDB lub NTSD. Nie można jej używać z usługą WinDbg.
Jeśli klient nie ma kopii plików binarnych debugera, należy użyć metody remote.exe.
serwera przetwarzania lub serwera połączenia KD można użyć, jeśli technik debugowania nie będzie mógł komunikować się z kimś w pokoju z serwerem. Wszystkie rzeczywiste zadania debugowania są wykonywane przez klienta (nazywanego inteligentnym klientem); spowoduje to usunięcie konieczności obecności drugiej osoby na samym serwerze.
Serwery przetwarzania są używane do debugowania w trybie użytkownika; Serwery połączeń KD są używane do debugowania w trybie jądra. Poza tym rozróżnieniem, zachowują się w podobny sposób.
Ta metoda jest również przydatna, jeśli komputer, na którym będzie uruchomiony serwer, nie może obsługiwać dużych obciążeń procesów lub jeśli technik z uruchomionym klientem ma dostęp do plików symboli lub plików źródłowych, które są poufne i nie mogą być dostępne przez serwer. Jednak ta metoda nie jest tak szybka ani wydajna, jak debugowanie zdalne za pośrednictwem debugera. Tej metody nie można użyć do debugowania pliku zrzutu.
Zobacz serwery procesów (tryb użytkownika) i serwery połączeń KD (tryb jądra) , aby uzyskać szczegółowe informacje.
Repeater to lekki serwer proxy, który przekazuje dane między dwoma komputerami. Możesz dodać przekaźnik między klientem a serwerem, jeśli przeprowadzasz zdalne debugowanie za pośrednictwem debugera lub jeśli używasz serwera procesów.
Użycie powtarzacza może być konieczne, jeśli klient i serwer nie mogą komunikować się bezpośrednio ze sobą, jednakże mogą uzyskiwać dostęp do zewnętrznego komputera. Można również używać odwrotnych połączeń z repeaterami. Można nawet użyć dwóch powtarzaczy z rzędu, ale rzadko jest to konieczne.
Aby uzyskać szczegółowe informacje, zobacz Repeaters.
Można również kontrolować CDB (lub NTSD) z debugera jądra. Jest to kolejna forma zdalnego debugowania. Aby uzyskać szczegółowe informacje, zobacz Kontrolowanie debugera User-Mode z debugera jądra.
Możliwe są odmiany wszystkich tych metod.
Istnieje możliwość łączenia kilku komputerów w celu skorzystania z więcej niż jednej metody transportu. Można tworzyć skomplikowane sekwencje transportu, które uwzględniają lokalizację techników, gdzie znajdują się symbole oraz czy istnieją zapory uniemożliwiające połączenia w określonych kierunkach. Zobacz Zaawansowane scenariusze zdalnego debugowania, aby zapoznać się z przykładami.
Można nawet przeprowadzić zdalne debugowanie na jednym komputerze. Na przykład przydatne może być uruchomienie serwera przetwarzania o niskich uprawnieniach, a następnie nawiązanie z nim połączenia za pomocą inteligentnego klienta o wysokich uprawnieniach.
Ważny
Podczas korzystania z debugowania zdalnego należy wziąć pod uwagę ważne zagadnienia dotyczące zabezpieczeń. Aby uzyskać więcej informacji, w tym informacje na temat włączania trybu bezpiecznego, zobacz Zabezpieczenia podczas debugowania zdalnego i zagadnienia dotyczące zabezpieczeń dla narzędzi debugowania systemu Windows.