Depurando o aplicativo de serviço manualmente
Anexar manualmente a um aplicativo de serviço depois de iniciado é muito parecido com a depuração de qualquer processo em execução no modo de usuário.
Use a ferramenta TList com a opção /s para exibir a ID do processo (PID) de cada processo em execução e os serviços ativos em cada processo.
Se o aplicativo de serviço que você deseja depurar for combinado com outros serviços em um único processo, você deverá isolá-lo antes de depurá-lo. Para fazer isso, execute o procedimento descrito em Isolando o serviço. Ao final deste procedimento, reinicie o serviço.
Para determinar o novo PID do serviço, emita o seguinte comando da ferramenta de Configuração de Serviço (Sc.exe), em que ServiceName é o nome do serviço:
sc queryex ServiceName
Agora, inicie o WinDbg ou o CDB com esse aplicativo de serviço como o destino. Há três maneiras de fazer isso: especificando o PID com a opção -p, especificando o nome executável com a opção -pn (se o nome do executável for exclusivo) ou especificando o nome do serviço com a opção -psn.
Por exemplo, se o processo SpoolSv.exe tiver um PID de 651 e contiver o serviço chamado Spooler, os três comandos a seguir serão equivalentes:
windbg -p 651 [AdditionalOptions]
windbg -pn spoolsv.exe [AdditionalOptions]
windbg -psn spooler [AdditionalOptions]
Depois que o depurador for iniciado, prossiga como faria em qualquer outra sessão de depuração no modo de usuário.