Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo passo a passo descreve como depurar um Windows serviço utilizando o depurador WinDbg (windbg.exe). Para depurar um serviço do Windows, pode anexar o depurador WinDbg o processo que aloja o serviço depois de inicia o serviço ou, pode configurar o serviço para iniciar com o WinDbg depurador anexado, de modo a que pode resolver problemas relacionados com serviço de arranque. Este artigo descreve estes dois métodos.
Anexar o depurador WinDbg a um serviço depois de inicia o serviço
Este método é semelhante ao método que pode utilizar para anexar um depurador a um processo e, em seguida, depurar um processo.
Utilizar o ID de processo do processo que aloja o serviço que pretende depurar
Para determinar o ID de processo (PID) do processo que aloja o serviço que pretende depurar, utilize um dos seguintes métodos.
Método 1: Utilizar o Gestor de tarefas
Clique com o botão direito do rato na barra de tarefas e, em seguida, clique em Gestor de tarefas . A caixa de diálogo Gestor de tarefas do Windows é apresentada.
Clique no separador processos da caixa de diálogo Gestor de tarefas do Windows .
Em Nome da imagem , clique no nome imagem do processo que aloja o serviço que pretende depurar. Tenha em atenção o ID de processo deste processo como especificado pelo valor do campo correspondente da PID .
Método 2: Utilizar o utilitário de lista de tarefas (tlist.exe)
Clique em Iniciar e, em seguida, clique em Executar . A caixa de diálogo Executar é apresentada.
Na caixa Abrir , escreva cmd e, em seguida, clique em OK .
Na linha de comandos, altere o caminho directório para reflectir a localização do ficheiro tlist.exe no computador.
Nota O ficheiro tlist.exe normalmente está localizado no seguinte directório: c:\Programas\Microsoft Files\Debugging Tools for Windows
Na linha de comandos, escreva tlist para listar os nomes de imagem e o processo de IDs de todos os processos actualmente em execução no computador.
Nota Anote o ID do processo que hospeda o serviço que deseja depurar.
Numa linha de comandos, altere o caminho directório para reflectir a localização do ficheiro windbg.exe no computador.
Nota Se numa linha de comandos não estiver aberta, siga os passos uma e b do método 1. O ficheiro windbg.exe normalmente está localizado no seguinte directório: c:\Programas\Microsoft Files\Debugging Tools for Windows.
Na linha de comandos, escreva windbg ? p ProcessID /g para anexar o depurador WinDbg o processo que aloja o serviço que pretende depurar.
Nota ProcessID é um marcador para o ID do processo que hospeda o serviço que deseja depurar.
Utilizar o nome imagem do processo que aloja o serviço que pretende depurar
Pode utilizar este método apenas se existe exactamente uma instância em execução do processo que aloja o serviço que pretende executar. Para o fazer, siga estes passos:
Clique em Iniciar e, em seguida, clique em Executar . A caixa de diálogo Executar é apresentada.
Na caixa Abrir , escreva cmd e, em seguida, clique em OK para abrir uma linha de comandos.
Na linha de comandos, altere o caminho de directório para reflectir a localização do ficheiro windbg.exe no computador.
Nota O ficheiro windbg.exe normalmente está localizado no seguinte directório: c:\Programas\Microsoft Files\Debugging Tools for Windows.
Na linha de comandos, escreva windbg ?pn ImageName /g para anexar o depurador WinDbg o processo que aloja o serviço que pretende depurar.
Nota ImageName é um marcador para o nome da imagem do processo que aloja o serviço que deseja depurar. O "-pn" opção da linha de comandos Especifica que o argumento da linha de comandos ImageName é o nome de imagem de um processo.
Inicie o depurador WinDbg e anexe o processo que hospeda o serviço que pretende depurar
Inicie o Explorador do Windows.
Localize o ficheiro windbg.exe no computador.
Nota O ficheiro windbg.exe normalmente está localizado no seguinte directório: c:\Programas\Microsoft Files\Debugging Tools for Windows
Execute o ficheiro windbg.exe juntamente com o parâmetro da linha de comandos de /g para iniciar o WinDbg depurador. O parâmetro da linha de comandos /g permite que o processo registado continuar após o ponto de quebra está definido.
No menu ficheiro , clique em anexar a um processo para apresentar a caixa de diálogo anexar para execução .
Clique para seleccionar o nó que corresponde ao processo que hospeda o serviço que pretende depurar e, em seguida, clique em OK .
Na caixa de diálogo que aparece, clique em Sim para guardar informações base da área de trabalho. Repare que agora pode a depurar o código desassemblado do serviço.
Configurar um serviço para iniciar com o WinDbg depurador anexado
Pode utilizar este método para depurar serviços se pretender resolver problemas relacionados com serviço de arranque.
Configurar as opções "Ficheiro de imagens execução". Para o fazer, utilize um dos seguintes métodos:
Método 1: Utilizar o Editor de sinalizadores globais (gflags.exe)
Inicie o Explorador do Windows.
Localize o ficheiro gflags.exe no computador.
Nota O ficheiro gflags.exe está normalmente localizado no seguinte directório: c:\Programas\Microsoft Files\Debugging Tools for Windows.
Execute o ficheiro gflags.exe iniciem sinalizadores globais Editor.
Na caixa de texto Nome do ficheiro de imagem , escreva o nome de imagem do processo que aloja o serviço que pretende depurar. Por exemplo, se pretende depurar um serviço é hospedado por um processo que tenha MyService.exe como o nome da imagem, escreva MyService.exe .
Em destino , clique para seleccionar a opção de Opções do ficheiro de imagem .
Em Opções de depurador de imagem , clique para seleccionar a caixa de verificação debugger .
Na caixa de texto depurador , escreva o caminho completo de depurador que pretende utilizar. Por exemplo, se pretender utilizar o depurador WinDbg para depurar um serviço, pode escrever um caminho completo que é semelhante à seguinte: C:\Programas\Microsoft Files\Debugging ferramentas para Windows\windbg.exe
Clique em Aplicar e, em seguida, clique em OK para sair do Editor de sinalizadores globais.
Método 2: Utilizar o Editor de registo
Clique em Iniciar e, em seguida, clique em Executar . A caixa de diálogo Executar é apresentada.
Na caixa Abrir , escreva regedit e, em seguida, clique em OK para iniciar o Editor de registo.
importante Esta secção, método ou tarefa contém passos que indicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo de forma incorrecta. Por conseguinte, certifique-se de que segue estes passos cuidadosamente. Criar uma para protecção adicional, cópia de segurança do registo antes de o modificar. Em seguida, pode restaurar o registo se ocorrer um problema. Para obter mais informações sobre como efectuar uma cópia de segurança e restaurar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
322756
(http://support.microsoft.com/kb/322756/
)
Como efectuar uma cópia de segurança e restaurar o registo no Windows
No Editor de registo, localize e, em seguida, com o botão direito do rato na seguinte subchave do registo:
Aponte para Novo e, em seguida, clique em chave . No painel da esquerda do Editor de registo, repare que nova chave # 1 (o nome de uma nova subchave de registo) está seleccionado para edição.
Escreva ImageName para substituir a nova chave # 1 e, em seguida, prima ENTER.
Nota ImageName é um marcador para o nome da imagem do processo que aloja o serviço que deseja depurar. Por exemplo, se pretende depurar um serviço é hospedado por um processo que tenha MyService.exe como o nome da imagem, escreva MyService.exe .
Com o botão direito do rato a subchave do registo que criou no passo "e".
Aponte para Novo e, em seguida, clique em Valor da cadeia . No painel da direita do Editor de registo, repare que o novo valor # 1 , o nome de uma nova entrada de registo, está seleccionada para edição.
Substituir novo valor # 1 depurador e, em seguida, prima ENTER.
Clique com o botão direito do rato a entrada de registo debugger que criou no passo h e, em seguida, clique em Modificar . A caixa de diálogo Editar cadeia é apresentada.
Na caixa de texto dados do valor , escreva DebuggerPath e, em seguida, clique em OK .
Nota DebuggerPath é um marcador para o caminho completo de depurador que pretende utilizar. Por exemplo, se pretender utilizar o depurador WinDbg para depurar um serviço, pode escrever um caminho completo que é semelhante à seguinte:
C:\Progra~1\Debugg~1\windbg.exe
Para a janela depurador apareça no ambiente de trabalho e para interagir com o depurador, tornar o serviço interactivos. Se não efectuar o serviço interactivo, o depurador será iniciado mas não conseguir visualizar e não pode emitir comandos. Para tornar o serviço interactivo, utilize um dos seguintes métodos:
Método 1: Utilizar a consola de serviços
Clique em Iniciar e, em seguida, aponte para programas .
No menu programas , aponte para Ferramentas administrativas e, em seguida, clique em Serviços . Aparece a consola de Serviços .
No painel da direita dos Serviços da consola, clique com o botão direito do rato ServiceName e clique em Propriedades .
Nota ServiceName é um marcador para o nome do serviço que deseja depurar.
No separador Iniciar sessão no , clique para seleccionar a caixa de verificação Permitir que o serviço interagir com o ambiente de trabalho na conta sistema local e, em seguida, clique em OK .
Método 2: Utilizar o Editor de registo
No Editor de registo, localize e, em seguida, clique na seguinte subchave do registo:
Nota Substitua ServiceName o nome do serviço que pretende depurar. Por exemplo, se pretende depurar um serviço denominado Omeuserviço, localize e, em seguida, clique na seguinte chave de registo:
No campo nome no painel da direita do Editor de registo, clique com o botão direito do rato em Type e, em seguida, clique em Modificar . A caixa de diálogo Editar valor DWORD aparece.
Alterar o texto dos dados do valor de caixa de texto ao resultado da operação ou binária com o valor binário de texto actual e o valor binário, 0x00000100, como os dois operandos. O valor binário, 0x00000100, corresponde à constante SERVICE_INTERACTIVE_PROCESS definido no ficheiro de cabeçalho WinNT.h no computador. Esta constante Especifica que um serviço interactivo por natureza.
Quando um serviço é iniciado, o serviço comunica para o serviço Gestor de controlo quanto o serviço necessários para iniciar (o período de tempo limite para o serviço). Se o Gestor de controlo de serviços não receber um aviso de "serviço foi iniciado" do serviço no período de tempo limite, o Gestor de controlo de serviços termina o processo que aloja o serviço. Este período de limite de tempo é normalmente menos de 30 segundos. Se não ajustar este período de tempo limite, o Gestor de controlo de serviços termina o processo e o depurador anexado enquanto está a tentar efectuar a depuração. Para ajustar este período de tempo limite, siga estes passos:
No Editor de registo, localize e, em seguida, com o botão direito do rato na seguinte subchave do registo:
Aponte para Novo e, em seguida, clique em Valor DWORD (DWORD Value) . No painel da direita do Editor de registo, repare que o novo valor # 1 (o nome de uma nova entrada de registo) está seleccionado para edição.
Escreva ServicesPipeTimeout para substituir novo valor # 1 e, em seguida, prima ENTER.
Clique com o botão direito do rato ServicesPipeTimeout movimento de registo que criou no passo c e, em seguida, clique em Modificar . A caixa de diálogo Editar valor DWORD aparece.
Na caixa de texto dados do valor , escreva TimeoutPeriod e, em seguida, clique em OK
Nota TimeoutPeriod é um marcador para o valor do período de tempo limite (em milissegundos) que pretende definir para o serviço. Por exemplo, se pretender definir o período de tempo limite para 24 horas (86400000 milissegundos), escreva 86400000 .
Reinicie o computador. Tem de reiniciar o computador para serviço de Gestor de controlo para aplicar esta alteração.
Inicie o serviço do Windows. Para o fazer, siga estes passos:
Clique em Iniciar e, em seguida, aponte para programas .
No menu programas , aponte para Ferramentas administrativas e, em seguida, clique em Serviços . Aparece a consola de Serviços .
No painel da direita dos Serviços da consola, clique com o botão direito do rato ServiceName e clique em Iniciar .
Nota ServiceName é um marcador para o nome do serviço que deseja depurar.
Antes de tentar um serviço de depuração através de uma rede, certifique-se de que os símbolos e os ficheiros de origem que utiliza o serviço estão acessíveis a partir do computador onde o serviço será executado. Para o fazer, utilize um dos seguintes métodos:
Conceda permissões de acesso de leitura, pelo menos, a todos os para a pasta no computador que contém os símbolos e os ficheiros de origem que utiliza o serviço.
Copie estes ficheiros de origem que o serviço utiliza e símbolos para o computador onde o serviço será executado.
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 824344
(http://support.microsoft.com/kb/824344/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.