Compartilhar via


Escolhendo o melhor método para depurar um aplicativo de serviço

Há várias formas diferentes de depurar uma aplicação de serviço. Para escolher o método correto, primeiro você deve fazer duas opções: a hora em que o depurador está anexado ao aplicativo de serviço e qual configuração de depuração usar.

Há três estágios em que o depurador pode ser anexado à aplicação de serviço:

  • O início da inicialização do serviço. O depurador é iniciado automaticamente quando o serviço começa. Escolha essa opção se quiser depurar o código de inicialização do serviço.

  • A primeira vez que o serviço encontra uma exceção. O depurador é iniciado automaticamente quando ocorre uma exceção ou falha ou se o aplicativo de serviço chama a função DebugBreak. Escolha essa opção se quiser que o depurador apareça quando um problema for encontrado, mas não antes.

  • Depois que o serviço estiver em execução normalmente. Você pode anexar manualmente um depurador a um serviço que já está em execução a qualquer momento. Escolha esta opção se você não quiser fazer preparativos antecipados para depuração.

Há três configurações de depuração que você pode escolher:

  • Depuração local. Um único depurador, executado no mesmo computador que o serviço.

  • Depuração remota. Um servidor de depuração em execução no mesmo computador que o serviço, sendo controlado a partir de um cliente de depuração em execução em um segundo computador.

  • Depuração do modo de usuário controlada pelo kernel. Um depurador de modo usuário em execução no mesmo computador que o serviço, sendo controlado por um depurador de kernel em um segundo computador.

Se o serviço estiver em execução no Windows Vista ou em uma versão posterior do Windows, haverá uma restrição sobre como essas opções podem ser combinadas. Se você quiser depurar desde o início da inicialização do serviço ou a partir do momento em que uma exceção for encontrada, deverá usar a depuração remota ou a depuração do modo de usuário controlada por kernel.

Em outras palavras, você não pode usar a depuração local, a menos que planeje anexar o depurador manualmente depois que o serviço já estiver em execução. Essa restrição resulta do fato de que, nessas versões do Windows, os serviços são executados na sessão 0 e qualquer depurador que seja automaticamente iniciado e anexado ao serviço também esteja na sessão 0 e não tenha uma interface do usuário no computador em que o serviço está sendo executado.