Como depurar serviços do Windows

Traduções deste artigo Traduções deste artigo
ID do artigo: 824344 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo passo a passo descreve como depurar um Windows service usando o depurador WinDbg (windbg.exe). Para depurar um serviço do Windows, você pode anexar o depurador WinDbg para o processo que hospeda o serviço depois que o serviço é iniciado ou você pode configurar o serviço para iniciar com o WinDbg depurador anexado para que você pode solucionar problemas serviço relacionadas à inicialização. Este artigo descreve esses dois métodos.

Requisitos

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Windows Services
  • Depurador WinDbg

Anexar o depurador WinDbg para um serviço depois que o serviço for iniciado

Esse método é semelhante ao método que você pode usar para anexar um depurador a um processo e, em seguida, depurar um processo.

Usar a identificação de processo do processo que hospeda o serviço que você deseja depurar

  1. Para determinar a identificação do processo (PID) do processo que hospeda o serviço que você deseja depurar, use um dos seguintes métodos.
    • Método 1: Usar o Gerenciador de tarefas
      1. Clique com o botão direito da barra de tarefas e clique em Gerenciador de tarefas . A caixa de diálogo Gerenciador de tarefas é exibida.
      2. Clique na guia processos da caixa de diálogo Gerenciador de tarefas .
      3. Em Nome da imagem , clique no nome do processo que hospeda o serviço que você deseja depurar da imagem. Observe a identificação do processo desse processo conforme especificado pelo valor do campo PID correspondente.
    • Método 2: Usar o utilitário de lista de tarefas (tlist.exe)
      1. Clique em Iniciar e, em seguida, clique em Executar . A caixa de diálogo Executar é exibida.
      2. Na caixa Abrir , digite cmd e, em seguida, clique em OK .
      3. No prompt de comando, altere o caminho do diretório para refletir o local do arquivo tlist.exe no seu computador.

        Observação O arquivo tlist.exe normalmente está localizado no seguinte diretório: C:\Program Files\Debugging Tools for Windows
      4. No prompt de comando, digite tlist para listar os nomes de imagem e o processo de identificações de todos os processos que estão sendo executados no seu computador.

        Observação Anote a identificação do processo do processo que hospeda o serviço que você deseja depurar.
  2. Em um prompt de comando, altere o caminho diretório para refletir o local do arquivo windbg.exe no seu computador.

    Observação Se um prompt de comando não estiver aberto, execute as etapas um e b do método 1. O arquivo windbg.exe normalmente está localizado no seguinte diretório: C:\Program Files\Debugging Tools for Windows.
  3. No prompt de comando, digite windbg ? p ProcessID /g para anexar o depurador WinDbg para o processo que hospeda o serviço que você deseja depurar.

    Observação ProcessID é um espaço reservado para a identificação do processo do processo que hospeda o serviço que você deseja depurar.

Use o nome imagem do processo que hospeda o serviço que você deseja depurar

Você pode usar esse método somente se houver exatamente uma instância em execução do processo que hospeda o serviço que você deseja executar. Para fazer isso, execute as seguintes etapas:
  1. Clique em Iniciar e, em seguida, clique em Executar . A caixa de diálogo Executar é exibida.
  2. Na caixa Abrir , digite cmd e, em seguida, clique em OK para abrir um prompt de comando.
  3. No prompt de comando, altere o caminho do diretório para refletir o local do arquivo windbg.exe no seu computador.

    Observação O arquivo windbg.exe normalmente está localizado no seguinte diretório: C:\Program Files\Debugging Tools for Windows.
  4. No prompt de comando, digite windbg ?pn ImageName /g para anexar o depurador WinDbg para o processo que hospeda o serviço que você deseja depurar.

    Observação ImageName é um espaço reservado para o nome de imagem do processo que hospeda o serviço que você deseja depurar. O "-pn" opção de linha de comando Especifica que o argumento de linha de comando ImageName é o nome de imagem de um processo.

Inicie o depurador WinDbg e anexe ao processo que hospeda o serviço que você deseja depurar

  1. Inicie o Windows Explorer.
  2. Localize o arquivo windbg.exe no seu computador.

    Observação O arquivo windbg.exe normalmente está localizado no seguinte diretório: C:\Program Files\Debugging Tools for Windows
  3. Executar o arquivo windbg.exe junto com a opção de linha de comando /g para iniciar o WinDbg depurador. A opção de linha de comando /g permite que o processo controlado continuar após o ponto de interrupção é definido.
  4. No menu arquivo , clique em anexar a um processo para exibir a caixa de diálogo Attach to Process .
  5. Clique para selecionar o nó que corresponde ao processo que hospeda o serviço que você deseja depurar e, em seguida, clique em OK .
  6. Na caixa de diálogo que aparece, clique em Sim para salvar informações de espaço de trabalho base. Observe que agora você pode depurar o código desmontado do seu serviço.

Configurar um serviço para iniciar com o WinDbg depurador anexado

Você pode usar esse método para depurar serviços se você quiser solucionar problemas relacionados ao inicialização serviço.
  1. Configure as opções "Execução de arquivo de imagem". Para fazer isso, use um dos seguintes métodos:
    • Método 1: Usar o Global Flags Editor (gflags.exe)
      1. Inicie o Windows Explorer.
      2. Localize o arquivo gflags.exe no seu computador.

        Observação O arquivo gflags.exe está normalmente localizado no seguinte diretório: C:\Program Files\Debugging Tools for Windows.
      3. Execute o arquivo gflags.exe para iniciar o Global Flags Editor.
      4. Na caixa de texto Nome do arquivo de imagem , digite o nome de imagem do processo que hospeda o serviço que você deseja depurar. Por exemplo, se você deseja depurar um serviço que é hospedado por um processo que tem MyService.exe como o nome de imagem, digite MyService.exe .
      5. Em destino , clique para selecionar a opção Opções de arquivo de imagem .
      6. Em Opções de depurador de imagem , clique para selecionar a caixa de seleção Debugger .
      7. Na caixa de texto depurador , digite o caminho completo do depurador que você deseja usar. Por exemplo, se você desejar usar o depurador WinDbg para depurar um serviço, você pode digitar um caminho completo que é semelhante à seguinte: C:\Arquivos de programas\Debugging Tools for Windows\windbg.exe
      8. Clique em Aplicar e, em seguida, clique em OK para encerrar o Editor de sinalizadores globais.
    • Método 2: Usar o Editor do registro
      1. Clique em Iniciar e, em seguida, clique em Executar . A caixa de diálogo Executar é exibida.
      2. Na caixa Abrir , digite regedit e, em seguida, clique em OK para iniciar o Editor do Registro.
      3. importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Por isso, certifique-se que você execute essas etapas cuidadosamente. Para proteção adicional, fazer backup do registro antes de modificá-lo. Em seguida, você pode restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
        322756Como fazer backup e restaurar o registro no Windows


        No Editor do Registro, localize e, em seguida, com o botão direito do mouse a seguinte subchave do Registro:
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. Aponte para novo e, em seguida, clique em chave . No painel esquerdo do Editor do Registro, observe que a nova chave # 1 (o nome de uma nova subchave de registro) está selecionada para edição.
      5. Digite ImageName para substituir nova chave # 1 e, em seguida, pressione ENTER.

        Observação ImageName é um espaço reservado para o nome de imagem do processo que hospeda o serviço que você deseja depurar. Por exemplo, se você deseja depurar um serviço que é hospedado por um processo que tem MyService.exe como o nome de imagem, digite MyService.exe .
      6. Clique com o botão direito do mouse na subchave do registro que você criou na etapa e.
      7. Aponte para novo e clique em Valor da seqüência . No painel direito do Editor do Registro, observe que o novo valor # 1 , o nome de uma nova entrada do Registro, está selecionada para edição.
      8. Substitua o novo valor # 1 com o depurador e, em seguida, pressione ENTER.
      9. Clique com o botão direito a entrada de registro do depurador que você criou na etapa h e, em seguida, clique em Modificar . A caixa de diálogo Editar seqüência aparece.
      10. Na caixa de texto dados do valor , digite DebuggerPath e, em seguida, clique em OK .

        Observação DebuggerPath é um espaço reservado para o caminho completo do depurador que você deseja usar. Por exemplo, se você desejar usar o depurador WinDbg para depurar um serviço, você pode digitar um caminho completo que é semelhante à seguinte:
        C:\Progra~1\Debugg~1\windbg.exe
  2. Para a janela de depurador apareça em sua área de trabalho e para interagir com o depurador, verifique seu serviço interativo. Se você não fizer o serviço interativo, o depurador será iniciado, mas você não pode vê-lo e não pode emitir comandos. Para tornar seu serviço interativos, use um dos seguintes métodos:
    • Método 1: Usar o console de serviços
      1. Clique em Iniciar e, em seguida, aponte para programas .
      2. No menu programas , aponte para Ferramentas administrativas e, em seguida, clique em serviços . O console serviços é exibido.
      3. No painel à direita dos serviços de console, clique com o botão direito do mouse ServiceName e, em seguida, clique em Propriedades .

        Observação ServiceName é um espaço reservado para o nome do serviço que você deseja depurar.
      4. Na guia Logon , marque a caixa de seleção Permitir que o serviço interaja com a área de trabalho na conta sistema local e em seguida, clique em OK .
    • Método 2: Usar o Editor do registro
      1. No Editor do Registro, localize e clique na seguinte subchave do Registro:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        Observação Substitua ServiceName pelo nome do serviço que você deseja depurar. Por exemplo, se você deseja depurar um serviço chamado MyService, localize e, em seguida, clique na seguinte chave do Registro:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. Sob o campo nome no painel à direita do Editor do Registro, clique com o botão direito do mouse tipo e, em seguida, clique em Modificar . A caixa de diálogo Editar valor DWORD é exibida.
      3. Alterar o texto nos dados do valor de caixa de texto para o resultado da operação ou binário com o valor binário de texto atual e o valor binário, 0 x 00000100, como dois operandos. O valor binário, 0 x 00000100, corresponde à constante SERVICE_INTERACTIVE_PROCESS que é definida no arquivo WinNT.h cabeçalho no seu computador. Essa constante Especifica que um serviço interativo por natureza.
  3. Quando um serviço é iniciado, o serviço se comunica para Gerenciador de controle de serviço quanto o serviço deve ter para iniciar (o período de tempo limite para o serviço). Se o Gerenciador de controle de serviços não receber um aviso de "serviço iniciado" do serviço dentro deste período de tempo limite, o Gerenciador de controle de serviços encerra o processo que hospeda o serviço. Esse período de tempo limite é geralmente menor do que 30 segundos. Se você não ajustar esse período de tempo limite, o Gerenciador de controle de serviços termina o processo e o depurador anexado enquanto você está tentando depurar. Para ajustar esse período de tempo limite, execute estas etapas:
    1. No Editor do Registro, localize e, em seguida, com o botão direito do mouse a seguinte subchave do Registro:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    2. Aponte para novo e, em seguida, clique em Valor DWORD . No painel direito do Editor do Registro, observe que o novo valor # 1 (o nome de uma nova entrada de registro) está selecionada para edição.
    3. Digite ServicesPipeTimeout para substituir o novo valor # 1 e, em seguida, pressione ENTER.
    4. Clique com o botão direito do mouse ServicesPipeTimeout entrada do registro que criou na etapa c e, em seguida, clique em Modificar . A caixa de diálogo Editar valor DWORD é exibida.
    5. Na caixa de texto dados do valor , digite TimeoutPeriod e, em seguida, clique em OK

      Observação TimeoutPeriod é um espaço reservado para o valor do período de tempo limite (em milissegundos) que você deseja definir para o serviço. Por exemplo, se você deseja definir o período de tempo limite de 24 horas (86400000 milissegundos), digite 86400000 .
    6. Reinicie o computador. Você deve reiniciar o computador do Gerenciador de controle de serviço para aplicar essa alteração.
  4. Inicie seu serviço de Windows. Para fazer isso, execute as seguintes etapas:
    1. Clique em Iniciar e, em seguida, aponte para programas .
    2. No menu programas , aponte para Ferramentas administrativas e, em seguida, clique em serviços . O console serviços é exibido.
    3. No painel à direita dos serviços do console, clique com o botão direito do mouse ServiceName e, em seguida, clique em Iniciar .

      Observação ServiceName é um espaço reservado para o nome do serviço que você deseja depurar.

Solução de problemas

Antes de tentar depurar um serviço em uma rede, verifique se os símbolos e os arquivos de origem que o serviço usa estão acessíveis a partir do computador onde o serviço será executado. Para fazer isso, use um dos seguintes métodos:
  • Conceda permissões de pelo menos acesso de leitura a todos para a pasta no computador que contém os arquivos de origem que usa o serviço e os símbolos.
  • Copie esses arquivos de origem que o serviço usa e símbolos para o computador onde o serviço será executado.

Referências

Para baixar as ferramentas e os utilitários que são mencionados neste artigo, visite o seguinte site da Microsoft:
Ferramentas de depuração para Windows: Visão geral
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
Para obter mais informações, visite o seguinte Microsoft Developer sites Network (MSDN (em INGLÊS) da Web:
Depurador WinDbg
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
Serviços
http://msdn2.microsoft.com/en-us/library/ms685141.aspx
Usando sinalizadores globais utilitário
http://msdn2.microsoft.com/en-us/library/ms792858.aspx

Propriedades

ID do artigo: 824344 - Última revisão: quarta-feira, 16 de maio de 2007 - Revisão: 6.5
A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Home Edition SP1
  • Microsoft Windows XP Home Edition SP1a
  • Microsoft Windows XP Home Edition SP2
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Professional SP1
  • Microsoft Windows XP Professional SP1a
  • Microsoft Windows XP Professional SP2
Palavras-chave: 
kbmt kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster KB824344 KbMtpt
Tradução automática
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 824344

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com