Partilhar via


A orientação de solução de problemas de comportamento de falha do aplicativo ou serviço

Este artigo fornece diretrizes sobre como solucionar problemas de comportamentos de travamento de aplicativos ou serviços.

Aplica-se a: Todas as versões com suporte do Windows Server e do Windows Client

Quando você vê a ID do Evento 1001 e a ID do Evento 1000 repetidamente no log do aplicativo, isso indica um comportamento de falha do aplicativo. Ocorre junto com processos próprios ou de terceiros e aponta para um possível módulo com falha.

Este artigo detalha o processo de verificação do evento, entendendo as informações no evento e manipulando o evento com base no fato de ser um aplicativo próprio ou de terceiros. As ferramentas de depuração para Windows são usadas neste processo.

Antes de começar

Considerações:

  • Verifique se você está executando as atualizações mais recentes para a versão do sistema operacional instalado.
  • Verifique se o aplicativo afetado está atualizado.
  • Se o software antivírus estiver instalado, verifique se ele está sendo executado na versão mais recente e se as exclusões necessárias estão em vigor.

As informações da ID do Evento 1001 level mostram se o Relatório de Erros do Windows (WER) está habilitado no sistema. No entanto, você precisa alterar esse serviço para coletar as level informações necessárias para a investigação. O sistema não registra essas informações por padrão para evitar uma pequena sobrecarga de desempenho.

A ID do evento 1000 com o Error nível é o evento de falha real do aplicativo. Ele mostra as seguintes informações como exemplo:

Log Name:      Application
Source:        Application Error
Date:          <Date Time>
Event ID:      1000
Task Category: Application Crashing Events
Level:         Error
Keywords:      
User:          SYSTEM
Computer:      demo.contoso.com
Description:
Faulting application name: netsh.exe, version: 10.0.22621.1, time stamp: 0x13af0815
Faulting module name: netsh.exe, version: 10.0.22621.1, time stamp: 0x13af0815
Exception code: 0xc0000005
Fault offset: 0x0000000000005399
Faulting process id: 0x0xFEE4
Faulting application start time: 0x0x1DAB66BB5BE07D4
Faulting application path: C:\WINDOWS\system32\netsh.exe
Faulting module path: C:\WINDOWS\system32\netsh.exe
Report Id: <Report ID>
Faulting package full name: 
Faulting package-relative application ID:

Ele geralmente apresenta um módulo da Microsoft como o módulo com falha, por exemplo, ntdll.dll, kernel32.dll e kernelbase.dll. Esses módulos são muito usados enquanto os processos estão em execução e em transição entre o modo de usuário e o modo kernel. No processo, eles são pegos como vítimas de outros tipos de corrupção anteriormente realizados por módulos que se comportam mal.

Exceções comuns:

  • 0xc0000022

    STATUS_ACCESS_DENIED

  • 0xc0000005

    STATUS_ACCESS_VIOLATION

  • 0xc0000374

    STATUS_HEAP_CORRUPTION

Quando ocorre uma exceção, você pode habilitar o log detalhado adicional para o processo e coletar um despejo de processo completo usando o WER (Relatório de Erros do Windows) e GFlags (gflags.exe).

Instale as Ferramentas de Depuração para Windows para obter gflags.exe, pois elas estão incluídas nas ferramentas. No entanto, você só precisa copiar o arquivo sem instalar as ferramentas na máquina que precisa de solução de problemas.

Coletar dados

Para o exemplo anterior de uma falha netsh.exe , configure a máquina para coletar despejos para obter mais informações sobre o que causou a falha. Substitua netsh.exe pelo arquivo executável identificado na ID do Evento 1000 em seu dispositivo.

  1. Configure o WER para coletar despejos de processo completos da exceção executando os seguintes comandos em um prompt de comando com privilégios elevados:

    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"
    
    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"/v DumpFolder /t REG_EXPAND_SZ /d "C:\WER" /f
    
    md C:\WER
    
    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpCount /t REG_DWORD /d 10 /f
    
    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpType /t REG_DWORD /d 2 /f
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpFolder /t REG_EXPAND_SZ /d "C:\WER" /f
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpCount /t REG_DWORD /d 10 /f
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpType /t REG_DWORD /d 2 /f
    

    Esses comandos permitem que até 10 despejos de processo completos do processo netsh.exe sejam coletados e armazenados na pasta C:\WER .

    Observação

    O local do Registro Windows no Windows 64 (WOW64) é adicionado, o que permite que aplicativos de 32 bits sejam executados em sistemas de 64 bits.

  2. Configure GFlags para monitorar alocações de heap para rastrear a corrupção.

    Navegue até o diretório em que a ferramenta está localizada e execute os comandos a seguir em um prompt de comando com privilégios elevados.

    Para ativar o sinalizador Habilitar heap de página (hpa):

    Gflags.exe /i netsh.exe +hpa
    

    Para desativar o sinalizador Habilitar heap de página:

    Gflags.exe /i netsh.exe -hpa
    

    Reinicie o processo para que a configuração entre em vigor.

  3. Monitore a pasta C:\WER e verifique se há despejos criados.

Analisar dados

Depois de ter os despejos de processo, você pode:

  • Compartilhe os despejos relevantes com o terceiro para investigação se o processo for um processo de terceiros.
  • Entre em contato com o Suporte da Microsoft para analisar os dados se o processo for um processo primário.
  • Use o depurador (windbg.exe) instalado usando as Ferramentas de Depuração para Windows e tente determinar o módulo com falha usando a extensão !analyze.

Depois de coletar os dados e concluir a investigação, exclua a chave do Registro (aquela com o nome do processo) e desative o sinalizador de heap de página Habilitar para GFlags.