Como depurar serviços do Windows

Traduções de Artigos Traduções de Artigos
Artigo: 824344 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

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

Requisitos

Isso artigo presume que você esteja familiarizado com os seguintes tópicos:
  • Serviços do Windows
  • Depurador WinDbg

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

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

Use a ID de processo do processo que hospeda o serviço que você deseja depurar

  1. Para determinar o processo de identificação (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 na barra de tarefas e clique em Gerenciador de tarefas. O Gerenciador de tarefas do Windows caixa de diálogo aparece a caixa.
      2. Clique no Processos guia da Gerenciador de tarefas do Windows caixa de diálogo.
      3. Em Nome da imagem, clique na imagem nome do processo que hospeda o serviço que você deseja depurar. Observação o ID do processo do processo conforme especificado pelo valor do correspondente PID campo.
    • Método 2: Usar o utilitário de lista de tarefas (tlist. exe)
      1. Clique em Iniciare clique em Executar. O Executar caixa de diálogo é exibida.
      2. No Abrir caixa, digite cmde clique em OK.
      3. No prompt de comando, altere o caminho de diretório 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 IDs de todos os processos que estão sendo executados no seu computador.

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

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

    Observação ProcessID é um espaço reservado para o Identificação de processo do processo que hospeda o serviço que você deseja Debug.

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

Você pode usar esse método apenas se houver exatamente uma execução instância do processo que hospeda o serviço que você deseja executar. Fazer Isso, siga estas etapas:
  1. Clique em Iniciare clique emExecutar. O Executar caixa de diálogo é exibida.
  2. No Abrir caixa, digitecmde 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 do WinDBG no seu computador.

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

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

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

  1. Inicie o Windows Explorer.
  2. Localize o arquivo do WinDBG no seu computador.

    Observação O arquivo do WinDbg normalmente está localizado no seguinte diretório: C:\Program Files\Debugging Tools for Windows
  3. Execute o arquivo WinDBG junto com o /g opção de linha de comando para iniciar o WinDbg depurador. O /g opção de linha de comando permite que o processo controlado continuar após o ponto de interrupção está definido.
  4. Sobre o Arquivo menu, clique em Anexar ao um processo Para exibir o Anexar ao processo caixa de diálogo caixa.
  5. Clique para selecionar o nó que corresponde ao processo que hospeda o serviço que você deseja depurar e, em seguida, clique emOK.
  6. Na caixa de diálogo que aparece, clique em SimPara salvar as informações de base do espaço de trabalho. Observe que 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 desejar Solucione problemas relacionados à inicialização do serviço.
  1. Configure as opções de "Execução do arquivo de imagem". Para fazer isso, Use um dos seguintes métodos:
    • Método 1: Usar o Editor de sinalizadores globais (Gflags. exe)
      1. Inicie o Windows Explorer.
      2. Localize o arquivo Gflags. exe no seu computador.

        Observação O arquivo Gflags. exe está localizado normalmente na seguinte diretório: C:\Program Files\Debugging Tools for Windows.
      3. Execute o arquivo Gflags. exe para iniciar os sinalizadores globais Editor.
      4. No Nome do arquivo de imagem caixa de texto Digite o nome da imagem do processo que hospeda o serviço que você deseja Debug. Por exemplo, se você deseja depurar um serviço hospedado por um processo que tem MyService.exe como o nome da imagem, tipo MyService.exe.
      5. Em Destino, clique para selecionar o Opções de arquivo de imagem opção.
      6. Em Opções de depurador de imagem, Clique para selecionar o Depurador caixa de seleção.
      7. No Depurador caixa de texto, digite o caminho completo do depurador que você deseja usar. Por exemplo, se você deseja usar o depurador WinDbg para depurar um serviço, você pode digitar um caminho completo que é semelhante à seguinte: C:\Program Programas\Debugging Tools for Windows\windbg.exe
      8. Clique em Aplicare clique em OK Feche o Editor de sinalizadores globais.
    • Método 2: Usar o Editor do registro
      1. Clique em Iniciare clique em Executar. O Executar caixa de diálogo é exibida.
      2. No Abrir caixa, digite Regedite clique em OK para iniciar Editor do registro.
      3. Importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, podem ocorrer problemas graves se modificar o Registro incorretamente. Portanto, certifique-se de seguir estas etapas cuidadosamente. Para maior proteção, faça backup do registro antes de modificá-lo. Em seguida, você poderá 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:
        322756 Como fazer backup e restaurar o registro no Windows


        No Editor do registro, localize e clique a seguinte subchave do registro:
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. Aponte para Novoe clique em Chave. No painel esquerdo do Editor do registro, observe que Nova chave #1 (o nome da nova subchave de registro) está selecionado para a edição.
      5. Digite ImageName para substituir Nova chave #1e pressione DIGITE.

        Observação ImageName é um espaço reservado para o nome da imagem do processo que hospeda o serviço que você deseja depurar. For exemplo, se você deseja depurar um serviço hospedado por um processo que tem MyService.exe como o nome da imagem, tipo MyService.exe.
      6. Clique com o botão direito na subchave do registro que você criou no etapa e.
      7. Aponte para Novoe clique em Valor de seqüência. No painel à direita do Editor do registro, observe que Novo valor de #1, é o nome de uma nova entrada de registro selecionado para edição.
      8. Substituir Novo valor de #1 com Depurador, e então pressione ENTER.
      9. Com o botão direito do Depurador Registro entrada que você criou na etapa h e, em seguida, clique em Modificar. O Editar seqüência caixa de diálogo é exibida.
      10. No Dados do valor caixa de texto, digite DebuggerPathe clique em OK.

        Observação DebuggerPath é um espaço reservado para o caminho completo do depurador que você deseja usar. Por exemplo, se você deseja usar o depurador WinDbg para depurar um serviço, você pode digitar um completo caminho que é semelhante à seguinte:
        C:\Progra~1\Debugg~1\windbg.exe
  2. A janela do depurador na área de trabalho, e para interagir com o depurador, tornar seu serviço interativo. Se você não faça seu serviço interativo, o depurador será iniciado, mas não é possível Consulte a que ele e você não pode emitir comandos. Para tornar seu serviço interativo, use um dos seguintes métodos:
    • Método 1: Usar o console de serviços
      1. Clique em Iniciare, em seguida, aponte para Programas.
      2. Sobre o Programas aponte para Ferramentas administrativase clique em Serviços. O Serviços Console é exibida.
      3. No painel à direita da Serviçosconsole, clique com botão direito 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. Sobre o Efetuar logon guia, clique para selecionar o Permitir que o serviço interaja com a área de trabalho caixa de seleção em Conta do sistema locale clique em OK.
    • Método 2: Usar o Editor do registro
      1. No Editor do registro, localize e clique no subchave do registro:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        Observação Substituir ServiceName com o nome de o serviço que você deseja depurar. Por exemplo, se você deseja depurar um serviço o nome MyService, localize e clique na seguinte chave do registro:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. Sob a Nome no painel à direita do Editor do registro de campo, o botão direito do mouse Digitee clique em Modificar. O Editar valor DWORD caixa de diálogo é exibida.
      3. Alterar o texto a Dados do valorcaixa de texto para o resultado da operação ou binária com o valor binário de texto atual e o valor binário, 0x00000100, como dois operandos. O binário valor, 0x00000100, corresponde à constante SERVICE_INTERACTIVE_PROCESS que é definido no arquivo de cabeçalho Winnt. H em seu computador. Esta constante Especifica Se um serviço é interativo por natureza.
  3. Quando um serviço é iniciado, o serviço se comunica com o Quanto tempo o serviço deve ter para iniciar (o tempo limite do Gerenciador de controle de serviço período do serviço). Se o Gerenciador de controle de serviço não receber um "serviço iniciado" aviso de serviço no período de tempo limite, o Gerenciador de controle serviços termina o processo que hospeda o serviço. Isso período de tempo limite é geralmente menos de 30 segundos. Se você não ajustar isso período de tempo limite, o Gerenciador de controle de serviço termina o processo e o anexado depurador enquanto você está tentando depurar. Para ajustar esse tempo limite o período, execute estas etapas:
    1. No Editor do registro, localize e clique no subchave do registro:
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
    2. Aponte para Novoe clique em Valor DWORD. No painel à direita do Editor do registro, observe que Novo valor de #1 (o nome da nova entrada de registro) está selecionado. para edição.
    3. Digite ServicesPipeTimeout para substituir Novo valor de #1e pressione DIGITE.
    4. Com o botão direito do ServicesPipeTimeoutentrada do registro que você criou na etapa c e, em seguida, clique em Modificar. O Editar valor DWORD caixa de diálogo é exibida.
    5. No Dados do valor caixa de texto, digite TimeoutPeriode 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 tempo limite período de 24 horas (86400000 milissegundos), tipo 86400000.
    6. Reinicie o computador. Você deve reiniciar o computador do serviço Gerenciador de controle de aplicar essa alteração.
  4. Inicie o serviço do Windows. Para fazer isso, siga estes passos:
    1. Clique em Iniciare, em seguida, aponte para Programas.
    2. Sobre o Programas aponte para Ferramentas administrativase clique em Serviços. O Serviços Console é exibida.
    3. No painel à direita da Serviçosconsole, clique com botão direito 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 usa o serviço acessível a partir do computador onde o serviço será executado. Para fazer isso, use um dos seguintes métodos:
  • Conceder permissões de pelo menos acesso de leitura a todos para a pasta no seu computador que contém os símbolos e os arquivos de origem que usa o serviço.
  • Copiar esses arquivos de origem que usa o serviço e símbolos para o computador onde o serviço será Execute.

Referências

Para baixar as ferramentas e 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 de Network (MSDN):
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

Artigo: 824344 - Última revisão: 4 de novembro de 2012 - Revisão: 8.0
A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
Palavras-chave: 
kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster kbmt 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 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

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