Partilhar via


Usando o WER

A partir do Windows Vista, o Windows fornece relatórios de falhas, não respostas e erros de falha do kernel por padrão, sem exigir alterações no seu aplicativo. O relatório incluirá informações de 'minidump' e 'heap dump', se necessário. Em vez disso, os aplicativos usam a API do WER para enviar relatórios de problemas específicos do aplicativo para a Microsoft.

Como o Windows relata automaticamente exceções sem tratamento, o aplicativo não deve lidar com exceções fatais. Se o processo com falha ou sem resposta for interativo, o WER exibirá uma interface do utilizador informando-o sobre o problema. Um aplicativo é considerado sem resposta se não responder a mensagens do Windows por cinco segundos enquanto o usuário está tentando interagir com o aplicativo.

Fluxo do Relatório de Erros do Windows para falhas, má resposta e erros do kernel

A seguir mostra as etapas que ocorrem para uma falha de aplicativo, não resposta ou falha do kernel.

  1. O evento problemático ocorre.
  2. O sistema operacional invoca WER.
  3. O WER coleta os dados, cria um relatório e solicita o consentimento do usuário (se necessário).
  4. O WER envia o relatório para a Microsoft (Watson Server) se o usuário consentir.
  5. Se o servidor Watson solicitar dados adicionais, o WER coletará os dados e solicitará o consentimento do usuário (se necessário).
  6. Se o aplicativo tiver se registrado para recuperação e reinicialização, o WER executará as funções de retorno de chamada registradas enquanto os dados são compactados e enviados para a Microsoft (se o usuário consentir).
  7. Se uma resposta ao problema estiver disponível da Microsoft, o usuário será notificado.

Os aplicativos podem usar as seguintes funções para personalizar o conteúdo do relatório enviado à Microsoft. As funções de registo dizem ao WER para incluir os arquivos específicos e blocos de memória no relatório de erros que o WER cria.

Fluxo de Relatório de Erros do Windows para relatórios de eventos genéricos

As etapas a seguir mostram como os aplicativos podem obter um relatório de erros para uma condição de erro não fatal.

  1. Ocorre um incidente de problema não fatal.
  2. O aplicativo reconhece o evento e usa a seguinte sequência de chamadas de função para gerar o relatório.
    1. Chame a função WerReportCreate para criar o relatório.
    2. Chame a função WerReportSetParameter para definir os parâmetros do relatório.
    3. Chame a função WerReportAddFile para adicionar ficheiros ao relatório.
    4. Chame a função WerReportAddDump para adicionar um minidump ao relatório (se necessário).
    5. Chame a função WerReportSubmit para enviar o relatório.
    6. Chame o WerReportCloseHandle para libertar recursos.
  3. Dependendo das opções específicas usadas ao chamar as funções na etapa 2, o WER concluirá o relatório de erros. A WER garantirá que a comunicação seja feita de acordo com as políticas definidas pelo utilizador. Por exemplo, o WER enviará o relatório para a Microsoft, enfileirará o relatório e mostrará as interfaces de usuário apropriadas para o usuário.

Excluindo um aplicativo do Relatório de Erros do Windows

Para excluir a sua aplicação do relatório de erros do Windows, use a função WerAddExcludedApplication. Para restaurar o relatório de erros da sua aplicação, use a função WerRemoveExcludedApplication.

Recuperando dados automaticamente e reiniciando um aplicativo com defeito

Um aplicativo pode usar o Application Recovery and Restart para salvar dados e informações de estado antes que o aplicativo saia devido a uma exceção não tratada ou quando o aplicativo para de responder. O aplicativo também é reiniciado, se solicitado. Para obter detalhes, consulte Recuperação e Reinício da Aplicação.

API legada

Um aplicativo pode relatar uma falha chamando a função ReportFault. No entanto, você não deve usar a função ReportFault, a menos que tenha um requisito muito específico que o comportamento padrão de relatório de erros do sistema operacional não possa cumprir.

Se o relatório de erros estiver habilitado, o sistema exibirá uma caixa de diálogo para o usuário indicando que o aplicativo encontrou um problema e será fechado. Se houver um depurador configurado na chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug, o usuário terá a opção de iniciar o depurador. O usuário também tem a opção de enviar um relatório para a Microsoft. Se o usuário enviar o relatório, o sistema exibirá outra caixa de diálogo agradecendo ao usuário pelo relatório e fornecendo um link para mais informações.

O sistema de relatório de erros suporta os seguintes modos de operação.

Modo de operação Descrição
Relatórios de memória partilhada Se o contexto de segurança do aplicativo for o mesmo que o contexto de segurança do usuário conectado, o sistema de relatório de erros usará um bloco de memória compartilhada para comunicação. Este modo não pode ser usado com o modo de relatório manifesto.
Relatório de manifesto Se o contexto de segurança do aplicativo não for o mesmo que o contexto de segurança do usuário conectado, o sistema de relatório de erros usará um arquivo para comunicação. Este modo também é usado para relatar aplicativos que não respondem e falhas do kernel. Este modo não pode ser usado com o modo de relatório de memória compartilhada.
Relatórios na Internet O sistema de relatório de erros envia todos os dados para a Microsoft através da Internet. Este é o modo de operação padrão. Ele não pode ser usado com o modo de relatório corporativo. Esse modo é usado quando não há um caminho de carregamento corporativo especificado pelo administrador.
Relatórios corporativos O sistema de relatório de erros envia todos os dados para um compartilhamento de arquivos em vez de carregá-los diretamente para a Microsoft. Isso permite que os gerentes de TI corporativos analisem os dados antes que eles sejam enviados à Microsoft. Esse modo é usado quando há um caminho de carregamento corporativo especificado pelo administrador. Ele não pode ser usado com o modo de relatório da Internet.
Relatórios sem cabeça O sistema de relatório de erros não exibirá nenhuma caixa de diálogo para o usuário. Isso permite que os gerentes de TI corporativos coletem relatórios de erros de seus funcionários o tempo todo. Esse modo é usado quando o relatório é habilitado pelo administrador, mas a notificação está desabilitada. Ele só pode ser usado com o modo de relatório corporativo.

Para excluir a sua aplicação da reportagem de erros, utilize a função AddERExcludedApplication.