Depurando o aplicativo de serviço automaticamente
Um depurador pode ser iniciado automaticamente quando o aplicativo de serviço é iniciado. Como alternativa, ele pode ser iniciado automaticamente quando o aplicativo de serviço encontra uma exceção ou executa um comando DebugBreak . Se você escolheu um desses métodos, este tópico explica como proceder. Se você não tiver certeza de qual método escolher, consulte Escolhendo o melhor método.
Depois, use o seguinte procedimento:
Execute uma das seguintes etapas preparatórias:
- Se você planeja depurar o aplicativo de serviço desde o início, incluindo seu código de inicialização, siga o procedimento descrito em Habilitando a depuração do código de inicialização. Como alternativa, se você quiser que o aplicativo de serviço interrompa o depurador quando ele falhar ou encontrar uma exceção, siga o procedimento descrito em Habilitando o aplicativo de serviço para invadir o depurador.
- Para garantir que o aplicativo de serviço permitirá que o depurador seja executado corretamente, execute o procedimento descrito em Ajustar o tempo limite do aplicativo de serviço.
- Se o serviço for combinado com outros serviços em um único processo SvcHost, execute o procedimento descrito em Isolando o Serviço.
Se o serviço já estiver em execução, você deverá reiniciá-lo para que essas alterações entrem em vigor. Recomendamos que você reinicie o Windows em si para remover quaisquer efeitos do serviço em execução. Se você não quiser reiniciar o Windows, use os seguintes comandos, em que ServiceName é o nome do serviço:
net stop ServiceName net start ServiceName
Se você optou por depurar o código de inicialização do aplicativo de serviço, quando o serviço é iniciado, o depurador é iniciado e anexado ao aplicativo de serviço.
Se você tiver escolhido permitir que o depurador seja disparado por uma exceção, o aplicativo de serviço será executado normalmente até encontrar uma exceção ou executar uma função DebugBreak . Neste ponto, o depurador é iniciado e anexado ao aplicativo de serviço.
A próxima etapa depende da linha de comando do depurador especificada durante a etapa 1:
- Se você especificou um depurador sem nenhuma opção de comunicação remota, esse depurador será iniciado e sua janela ficará visível.
- Se você especificou o NTSD com as opções -server e -noio, o NTSD será iniciado sem uma janela de console. Em seguida, você pode se conectar à sessão de depuração de outro computador iniciando qualquer depurador do modo de usuário com o parâmetro -remote. Para obter instruções, consulte Ativando um cliente de depuração.
- Se você especificou o NTSD com a opção -d, o NTSD será iniciado sem uma janela de console. Em seguida, você pode se conectar à sessão de depuração usando o depurador de kernel em execução em outro computador. Para obter instruções, consulte Controling the User-Mode Debugger from the Kernel Debugger.
- Se você especificou o NTSD com as opções -ddefer e -server, o NTSD será iniciado sem uma janela de console. Em seguida, você pode se conectar à sessão de depuração usando um depurador de kernel e um depurador remoto no modo de usuário, em execução em um computador diferente do serviço (mas possivelmente o mesmo computador que o outro). Para obter instruções, consulte Combinando esse método com a depuração remota.
Quando o depurador é iniciado, o serviço pausa no ponto de interrupção do processo inicial, na exceção ou no comando DebugBreak . Isso permite examinar o estado atual do aplicativo de serviço, definir pontos de interrupção e fazer outras opções de configuração desejadas.
Use g (Go) ou outro comando de execução para retomar a execução do aplicativo de serviço.