Leonardo Gomes

TI Especialista

By

Como pegar um DUMP de um serviço que compartilha um mesmo processo com outros serviços.

Olá,

Quando fazemos o debug de algum serviço que está terminando inexperadamente, porém este serviço está compartilhando o mesmo processo com outros serviços, como por exemplo os serviços Lmhosts, W32Time, LanmanServer e outros que usam o mesmo processo svchost.exe, neste caso para que possamos pegar um DUMP de um serviço em específico, nós precisamos isolar o mesmo, abaixo descrevo uma forma de atingirmos este objetivo.

Cenário:
O serviço “Server” está caindo/quebrando(crash) a cada 5 minutos.
Na console services.msc, nós podemos verificar que o nome do serviço “Server” é LanmanServer
Se executarmos o comando:
> tasklist /svc | findstr LanmanServer

Poderemos verificar que o serviço “LanmanServer” está compartilhando o mesmo processo svchost.exe com outros serviços, portanto antes de pegarmos o dump do processo apra debugar o serviço, precisamos isolar o serviço “LanmanServer” para rodar em uma instância própria do processo svchost.exe

Utilizando as linhas de comando existentes no Windows
1º Se o serviço “LanmanServer” estiver atualmente compartilhando o processo svchost.exe com outros serviços, para isolarmos o mesmo utilizamos a seguinte linha de comando.
> sc config LanmanServer Type= own (é importante que deixemos um espaço logo após o sinal de igual(=), ou o comando irá falhar)
2º Se o comando completar com sucesso, você verá a seguinte mensagem: “[SC] ChangeServiceConfig SUCCESS”
3 º Reinicie o servidor para que a alteração tenha efeito
4 º Após reiniciar o servidor, execute o seguinte comando para verificar qual é o ID da instância do processo svchost.exe que está rodando o serviço “LanmanServer”
> tasklist /svc | findstr LanmanServer
5 º Agora, você terá o número do PID do processo que está executando o serviço “LanmanServer” e você pode utilizar o adplus por exemplo para pegar um dump do processo em “crash mode”, referênciando o PID do processo em vez de utilizar o nome do processo.
> Exemplo: > cscript adplus.vbs -crash -p <PID> -o c:\dump_folder -NoDumpOnFirst

Revertendo:
6 º Para reverter o serviço para compartilhar novamente o processo, utilize o seguinte comando:
> sc config LanmanServer Type= share (novamente, o espaço se torna necessário após o sinal de igual(=), ou o comando não funcionará)

Espero que com este artigo eu tenho ajudado.

Obrigado.
Leonardo Gomes

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>