Udostępnij za pośrednictwem


Wybieranie najlepszej metody debugowania aplikacji usługi

Istnieje kilka różnych sposobów debugowania aplikacji usługi. Aby wybrać poprawną metodę, należy najpierw dokonać dwóch wyborów: czasu, w którym debuger jest dołączony do aplikacji usługi i jakiej konfiguracji debugowania użyć.

Istnieją trzy etapy, na których debuger może być dołączony do aplikacji usługi:

  • Początek uruchamiania usługi. Debuger jest uruchamiany automatycznie po rozpoczęciu usługi. Wybierz tę opcję, jeśli chcesz debugować kod inicjowania usługi.

  • Podczas pierwszego napotkania wyjątku przez usługę. Debuger jest uruchamiany automatycznie po wystąpieniu wyjątku lub awarii lub jeśli aplikacja usługi wywołuje funkcję DebugBreak. Wybierz tę opcję, jeśli chcesz, aby debuger był wyświetlany po napotkaniu problemu, ale nie wcześniej.

  • Po normalnym uruchomieniu usługi. Debuger można ręcznie dołączyć do usługi, która jest już uruchomiona w dowolnym momencie. Wybierz tę opcję, jeśli nie chcesz wykonywać zaawansowanych przygotowań do debugowania.

Istnieją trzy konfiguracje debugowania, które można wybrać:

  • Debugowanie lokalne. Pojedynczy debuger działający na tym samym komputerze co usługa.

  • Debugowanie zdalne. Serwer debugowania uruchomiony na tym samym komputerze co usługa, kontrolowany z poziomu klienta debugowania uruchomionego na drugim komputerze.

  • Debugowanie w trybie użytkownika kontrolowane przez jądro. Debuger trybu użytkownika działający na tym samym komputerze co usługa, kontrolowany z debugera jądra na drugim komputerze.

Jeśli usługa jest uruchomiona w systemie Windows Vista lub nowszej wersji systemu Windows, istnieje jedno ograniczenie dotyczące sposobu łączenia tych opcji. Jeśli chcesz debugować od początku uruchamiania usługi lub od momentu wystąpienia wyjątku, należy użyć debugowania zdalnego lub debugowania w trybie użytkownika kontrolowanego przez jądro.

Innymi słowy, nie można użyć debugowania lokalnego, chyba że planujesz ręcznie dołączyć debuger po uruchomieniu usługi. To ograniczenie wynika z faktu, że w tych wersjach systemu Windows usługi działają w sesji 0, a każdy debuger, który jest automatycznie uruchamiany i dołączony do usługi jest również w sesji 0 i nie ma interfejsu użytkownika na komputerze, na którym działa usługa.