Udostępnij za pośrednictwem


Aktywowanie serwera przetwarzania

Serwer przetwarzania dołączony do narzędzi debugowania dla systemu Windows nosi nazwę DbgSrv (dbgsrv.exe). Aby aktywować serwer przetwarzania, otwórz okno wiersza polecenia z podwyższonym poziomem uprawnień (Uruchom jako administrator) i wprowadź polecenie dbgsrv.

Uwaga Można aktywować serwer przetwarzania bez podwyższonego poziomu uprawnień, a klienci debugowania będą mogli łączyć się z serwerem. Jednak klienci nie będą mogli odnaleźć serwera przetwarzania, chyba że został aktywowany z podwyższonym poziomem uprawnień. Aby uzyskać informacje na temat odnajdywania serwerów debugowania, zobacz Wyszukiwanie serwerów przetwarzania.

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.

DbgSrv obsługuje kilka protokołów transportu: nazwany potok (NPIPE), TCP, port COM, bezpieczny potok (SPIPE) i secure sockets layer (SSL).

zalecane metody połączenia z dodatkowymi zabezpieczeń

dbgsrv -t spipe:proto=Protocol,{certuser=Cert|machuser=Cert},pipe=PipeName[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t ssl:proto=Protocol,{certuser=Cert|machuser=Cert},port=Socket,clicon=Client[,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

Niezabezpieczone metody połączenia

dbgsrv -t tcp:port=Socket[,hidden][,password=Password][,ipversion=6][,IcfEnable] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t tcp:port=Socket,clicon=Client[,password=Password][,ipversion=6] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t npipe:pipe=PipeName[,hidden][,password=Password][,IcfEnable] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

dbgsrv -t com:port=COMPort,baud=BaudRate,channel=COMChannel[,hidden][,password=Password] [[-sifeo Executable] -c[s] AppCmdLine] [-x | -pc] 

Parametry

Parametry w poprzednich poleceniach mają następujące możliwe wartości:

potok =PipeName
Gdy jest używany protokół NPIPE lub SPIPE, PipeName to ciąg, który będzie służyć jako nazwa potoku. Każda nazwa potoku powinna identyfikować unikatowy serwer przetwarzania. Jeśli spróbujesz ponownie użyć nazwy potoku, zostanie wyświetlony komunikat o błędzie. PipeName nie może zawierać spacji ani cudzysłowów. PipeName może zawierać liczbowykod formatu stylu, taki jak %x lub %d. Serwer przetwarzania zastąpi go identyfikatorem procesu DbgSrv. Drugi taki kod zostanie zastąpiony identyfikatorem wątku dbgSrv.

Uwaga Może być konieczne włączenie udostępniania plików i drukarek na komputerze z uruchomionym serwerem przetwarzania. W Panelu sterowania przejdź do Network and Internet > Network and Sharing Center> Zaawansowane ustawienia udostępniania. Wybierz pozycję Włącz udostępnianie plików i drukarek.

port =Socket
Gdy jest używany protokół TCP lub SSL, Socket jest numerem portu gniazda.

Istnieje również możliwość określenia zakresu portów rozdzielonych dwukropkiem. DbgSrv sprawdzi każdy port w tym zakresie, aby sprawdzić, czy jest wolny. Jeśli znajdzie bezpłatny port i nie wystąpi błąd, serwer przetwarzania zostanie utworzony. Klient inteligentny będzie musiał określić rzeczywisty port używany do nawiązywania połączenia z serwerem. Aby określić rzeczywisty port, użyj dowolnej metody opisanej w Wyszukiwanie serwerów przetwarzania; po wyświetleniu tego serwera przetwarzania port będzie po dwóch liczbach rozdzielonych dwukropkiem. Pierwsza liczba będzie rzeczywistym używanym portem; drugi można zignorować. Jeśli na przykład port został określony jako port =51:60, a faktycznie użyto portu 53, wyniki wyszukiwania będą pokazywać wartość "port=53:60". (Jeśli używasz parametru clicon w celu nawiązania połączenia odwrotnego, klient inteligentny może określić zakres portów w ten sposób, podczas gdy serwer przetwarzania musi określić rzeczywisty używany port).

clicon=Client
Gdy jest używany protokół TCP lub SSL i clicon parametr jest określony, zostanie otwarte odwrotne połączenie. Oznacza to, że serwer przetwarzania spróbuje nawiązać połączenie z klientem inteligentnym, zamiast umożliwiać klientowi zainicjowanie kontaktu. Może to być przydatne, jeśli masz zaporę, która uniemożliwia połączenie w zwykłym kierunku. Client określa nazwę sieci lub adres IP komputera, na którym istnieje klient inteligentny lub zostanie utworzony. Dwa początkowe ukośniki odwrotne (\) są opcjonalne.

Ponieważ serwer przetwarzania szuka jednego określonego klienta, nie można połączyć wielu klientów z serwerem, jeśli używasz tej metody. Jeśli połączenie zostanie odrzucone lub zostanie przerwane, konieczne będzie ponowne uruchomienie serwera przetwarzania. Serwer przetwarzania odwrotnego połączenia nie będzie wyświetlany, gdy ktoś używa -QR opcji wiersza polecenia do wyświetlania wszystkich aktywnych serwerów.

Uwaga Gdy jest używana clicon, najlepiej jest uruchomić klienta inteligentnego przed utworzeniem serwera przetwarzania, chociaż jest również dozwolona zwykła kolejność (serwer przed klientem).

port =COMPort
Gdy jest używany protokół COM, COMPort określa port COM do użycia. Prefiks "COM" jest opcjonalny — na przykład dopuszczalne są zarówno wartości "com2" i "2".

baud=BaudRate
Gdy jest używany protokół COM, BaudRate określa szybkość transmisji, z jaką zostanie uruchomione połączenie. Dozwolona jest szybkość transmisji obsługiwana przez sprzęt.

kanał =COMChannel
Jeśli jest używany protokół COM, COMChannel określa kanał COM, który ma być używany w komunikacji z klientem debugowania. Może to być dowolna wartość z zakresu od 0 do 254 włącznie. Można użyć jednego portu COM dla wielu połączeń przy użyciu różnych numerów kanałów. (Różni się to od użycia portów COM dla debugowania — w takiej sytuacji nie można używać kanałów w porcie COM).

proto = protokołu
Jeśli jest używany protokół SSL lub SPIPE, Protocol określa protokół Secure Channel (S-Channel). Może to być dowolny z ciągów tls1, pct1, ssl2 lub ssl3.

Cert
Jeśli jest używany protokół SSL lub SPIPE, certyfikat określa certyfikat. Może to być nazwa certyfikatu lub odcisk palca certyfikatu (ciąg cyfr szesnastkowych podanych przez przystawkę certyfikatu). Jeśli jest używana składnia certuser=Cert, debuger wyszuka certyfikat w magazynie systemowym (magazyn domyślny). Jeśli jest używana składnia machuser=Cert, debuger wyszuka certyfikat w magazynie maszyn. Określony certyfikat musi obsługiwać uwierzytelnianie serwera.

ukryte
Uniemożliwia wyświetlanie serwera przetwarzania, gdy ktoś używa opcji wiersza polecenia -QR, aby wyświetlić wszystkie aktywne serwery.

password=Password
Wymaga, aby klient inteligentny podał określone hasło w celu nawiązania połączenia z serwerem przetwarzania. hasło może być dowolnym ciągiem alfanumerycznym, maksymalnie dwunastoma znakami.

Ważny

Użycie hasła z protokołem TCP, NPIPE lub COM zapewnia tylko niewielką ilość ochrony, ponieważ hasło nie jest szyfrowane. Jeśli używasz hasła razem z protokołem SSL lub SPIPE, hasło jest szyfrowane. Jeśli chcesz ustanowić bezpieczną sesję zdalną, musisz użyć protokołu SSL lub SPIPE.

ipversion=6
(Narzędzia debugowania dla systemu Windows 6.6.07 i starszych) Wymusza, aby debuger używał adresu IP w wersji 6, a nie w wersji 4 podczas nawiązywania połączenia z Internetem przy użyciu protokołu TCP. W systemie Windows Vista i nowszych wersjach debuger próbuje automatycznie domyślnie ustawić adres IP w wersji 6, co sprawia, że ta opcja jest niepotrzebna.

IcfEnable
Powoduje, że debuger włącza niezbędne połączenia portów dla komunikacji TCP lub nazwanego potoku, gdy zapora połączenia internetowego jest aktywna. Domyślnie zapora połączenia internetowego wyłącza porty używane przez te protokoły. Gdy IcfEnable jest używany z połączeniem TCP, debuger powoduje otwarcie portu systemu Windows określonego przez parametr socket . Gdy IcfEnable jest używany z nazwanym połączeniem potoku, debuger powoduje otwarcie portów używanych dla nazwanych potoków (porty 139 i 445). Debuger nie zamyka tych portów po zakończeniu połączenia.

-sifeoWykonywalny
Zawiesza wartość Opcji wykonywania pliku obrazu (IFEO) dla danego obrazu. plik wykonywalny powinien zawierać nazwę pliku obrazu wykonywalnego, w tym rozszerzenia nazw plików. Opcja -sifeo umożliwia ustawienie dbgSrv jako debugera IFEO dla obrazu utworzonego przez opcję -c, bez powodowania cyklicznego wywołania ze względu na ustawienie IFEO. Tej opcji można użyć tylko wtedy, gdy jest używana -c.

-c
Powoduje utworzenie nowego procesu przez dbgSrv. Za pomocą tej opcji można utworzyć proces, który zamierzasz debugować. Jest to podobne do tworzenia nowego procesu z debugera, z tą różnicą, że ten proces nie zostanie debugowany podczas jego tworzenia. Aby debugować ten proces, określ jego identyfikator PID i użyj opcji -p podczas uruchamiania inteligentnego klienta w celu debugowania tego procesu.


Powoduje natychmiastowe wstrzymanie nowo utworzonego procesu. Jeśli używasz tej opcji, zaleca się użycie usługi CDB jako klienta inteligentnego i uruchomienie inteligentnego klienta przy użyciu opcji wiersza polecenia -pb w połączeniu z -p PID. Jeśli dołączysz opcję -pb w wierszu polecenia, proces zostanie wznowione po dołączeniu debugera do niego; w przeciwnym razie możesz wznowić proces za pomocą polecenia ~*m.

AppCmdLine
Określa pełny wiersz polecenia procesu do utworzenia. AppCmdLine może być ciągiem Unicode lub ASCII i może zawierać dowolny znak drukowalny. Cały tekst wyświetlany po -c[s] parametru zostanie utworzony w celu utworzenia ciągu AppCmdLine.

-x
Powoduje zignorowanie pozostałej części wiersza polecenia. Ta opcja jest przydatna, jeśli uruchamiasz usługę DbgSrv z aplikacji, która może dołączać niechciany tekst do wiersza polecenia.

-pc
Powoduje zignorowanie pozostałej części wiersza polecenia. Ta opcja jest przydatna, jeśli uruchamiasz usługę DbgSrv z aplikacji, która może dołączać niechciany tekst do wiersza polecenia. Błąd składniowy powoduje, że -pc jest ostatnim elementem w wierszu polecenia DbgSrv. Oprócz tego ograniczenia -pc jest identyczny z -x.

Można uruchomić dowolną liczbę serwerów przetwarzania na jednym komputerze. Jest to jednak zwykle niepotrzebne, ponieważ jeden serwer przetwarzania może być używany przez dowolną liczbę klientów inteligentnych (każdy zaangażowany w inną sesję debugowania).