2009-07-31 18 views
8

Mam usługę Windows, która ma wiele wątków, które działają. Wszystko idzie dobrze w testowaniu, do tej pory, gdy zobaczyłem "usługa systemu Windows nieoczekiwanie zakończyła się" w przeglądarce zdarzeń.Usługa systemu Windows została nieoczekiwanie zamknięta.

Jak mam próbować debugować, gdzie to się dzieje? Mam wyjątki przyłapane w normalnych okolicznościach, ale nie w tym przypadku.

Nie wiem od czego zacząć.

JD.

+1

Czy używasz niezarządzanych bibliotek? –

Odpowiedz

6

umieścić wezwanie do System.Diagnostics.Debugger.Break() w onStart() wywołania zwrotnego. Po uruchomieniu usługi zostanie wyświetlony monit o uruchomienie debugera Visual Studio. Po uruchomieniu debuggera możesz rozpocząć debugowanie.

+0

Problemem, który mam, jest matryca usługi Windows i nie mogę jej odtworzyć. W jaki sposób debugowanie to pomoże? Gdzieś wyrzucany jest nieobsługiwany wyjątek. Próbuję/excepts w moim kodzie, ale wyraźnie wyjątek nie zostanie złapany. –

+1

Jeśli usługa jest co najmniej do wywołania zwrotnego OnStart(), a następnie umieścić wywołanie Debugger.Break() w, jak powiedziałem. Jak tylko pojawi się debugger i zatrzyma się w twoim punkcie przerwania, przejdź do menu Debuguj i wybierz opcję Exceptions. Kliknij pole wyboru pod kolumną Thrown dla wyjątków Runtime Common Language. Podczas kontynuowania sesji debugowania debuger zostanie przerwany, jeśli wyjątek zostanie odrzucony, a nie zostanie przechwycony. –

+0

Można nawet wywołać funkcję Debugger.Break() w funkcji punktu wejścia dla usługi, która jest jeszcze wcześniej w procesie uruchamiania (oczywiście) niż wywołanie zwrotne OnStart(). Zrób to na wypadek, gdybyś nigdy nie dotarł do twojego wywołania zwrotnego OnStart(). –

Powiązane problemy