Como: depurar Windows serviço Applications

Devido ao fato de um serviço ter que ser executado de dentro do contexto do gerenciador de controle de serviços ao invés de dentro do Visual Studio, depuração de um serviço não é tão simples como depuração de outros tipos de aplicativos Visual Studio.Para depurar um serviço, você deve iniciar o serviço e em seguida anexar um depurador ao processo no qual o serviço está rodando.Você pode, então, depurar seu aplicativo usando todas as funcionalidades de depuração padrões do Visual Studio.

Cuidado:

Você não deve anexar a um processo, a menos que você saiba qual é o processo e entenda as consequências da anexação e de uma possível interrupção daquele processo.Por exemplo, se você anexar ao processo WinLogon e em seguida parar a depuração, o sistema será interrompido porque ele não pode operar sem WinLogon.

Você pode anexar o depurador somente a um serviço em execução.O processo anexo interrompe o atual funcionamento do seu serviço; ele, na verdade, não para ou pausa o processamento do serviço.Isto é, se o seu serviço está sendo executado quando você começa a depuração, ele está ainda tecnicamente num estado inicial à medida que você o depura, mas seu processamento foi suspenso.

Anexar ao processo do serviço permite a você depurar a maior parte, mas não todo código do serviço; por exemplo, porque o serviço já foi iniciado, você não pode depurar o código OnStart método dessa forma, ou o código na Main método usado para carregar o serviço. Uma maneira para resolver isto é criar um segundo serviço temporário no aplicativo do seu serviço, existente somente para auxílio na depuração.Você pode instalar os dois serviços, e em seguida iniciar esse serviço " fictício " para carregar o processo do serviço.Depois que o serviço temporário começar o processo, você pode usar o Menu Debug no Visual Studio para anexar ao processo do serviço.

Depois de anexar ao processo, você pode definir pontos de interrupção e usá-los para depurar seu código.Após você sair da caixa de diálogo que você usa para anexar ao processo, você está efetivamente em modo de depuração.Você pode usar o Services Control Manager para iniciar, parar, pausar e continuar seu serviço, atingindo assim os pontos de interrupção que você definiu.Posteriormente você pode remover esse serviço dummy depois de a depuração ser bem-sucedida.

Observação:

Depurando o OnStart método pode ser difícil porque o Gerenciador de serviços Windows impõe um limite de 30 segundos para todas as tentativas de iniciar um serviço. Para obter mais informações, consulte Solução de problemas: Depurando Windows Services.

Para depurar um serviço

  1. Instale seu serviço.Para obter mais informações, consulte Como: Instalar e desinstalar Serviços.

  2. Inicie seu serviço, a partir de Services Control Manager, Server Explorer, ou de código.Para obter mais informações, consulte Como: Inicie os serviços.

  3. No Visual Studio, escolha Processes no menu Debug.

    A caixa de diálogo Processes aparece.

  4. Clique em Show system processes.

  5. Na seção Available Processes, clique no processo para o serviço, e em seguida clique Attach.

    Dica:

    O processo terá o mesmo nome que o arquivo executável para o serviço.

    A caixa de diálogo Attach to Process será exibida.

  6. Escolha quaisquer opções apropriadas, e clique OK para fechar a caixa de diálogo.

    Observação:

    Você está agora em modo de depuração.

  7. Defina pontos de interrupção quaisquer que você deseja usar no seu código.

  8. Acesse o Services Control Manager e manipule seu serviço, enviando comanjdos de parar, pausar, e continuar para atingir seus pontos de interrupção.Para obter mais informações sobre como executar o Gerenciador de controle de serviços, see Como: Inicie os serviços.

Consulte também

Tarefas

Como: Instalar e desinstalar Serviços

Como: Inicie os serviços

Conceitos

Introdução aos Aplicativos de Serviço do Windows