Código de evento 1001 relatório de erros do Windows. Windows desbloqueado: como funciona o registro de erros? Usando o Relatório de Erros do Windows

No artigo anterior desta série, dedicado ao mecanismo de reinicialização e recuperação de aplicativos, mencionamos o mecanismo Windows Error Reporting (WER). Isso será discutido neste artigo desta série.

No artigo anterior desta série, dedicado ao mecanismo de reinicialização e recuperação de aplicativos, mencionamos o mecanismo Windows Error Reporting (WER). Isso será discutido neste artigo desta série.

Mecanismo de relatório de erros do Windows

Usando o Relatório de Erros do Windows (WER), você pode coletar dados sobre erros que ocorrem em aplicativos e enviar essas informações para um site especial da Microsoft (http://winqal.microsoft.com) ou armazená-las localmente. A coleta de informações detalhadas sobre erros e falhas ajuda a eliminar deficiências de aplicativos, corrigir erros, simplifica o lançamento de service packs e novas versões de aplicativos e garante a estabilidade geral e a confiabilidade dos próprios aplicativos e sistema operacional.

Observe que a própria Microsoft usa ativamente o mecanismo de relatório de erros do Windows durante o processo de desenvolvimento e após o lançamento dos produtos no mercado. Sim, grupo de produtos Microsoft Office corrigiu 50% dos erros no Office Service Pacl 2, grupo de produtos Estúdio Visual- 74% dos erros no Beta 1 Visual Studio 2005, 29% dos erros no Windows XP foram corrigidos no Windows XP Service Pack 1. Atualmente, mais de 2 mil empresas utilizam Serviços do Windows Relatório de erros para melhorar a qualidade de seus aplicativos.

O mecanismo de relatório de erros do Windows apareceu pela primeira vez no Windows XP, foi significativamente expandido no Windows Vista e recebeu desenvolvimento adicional V Servidor Windows 2008, Vista Service Pack 1 e Windows 7 e Windows Server 2008 R2. Assim, ao nível do Windows Vista, os desenvolvedores têm a oportunidade não só de receber informações sobre falhas ocorridas nas aplicações, mas também dados de desempenho. Agora você pode criar, configurar e enviar relatórios de problemas com mais flexibilidade, as ferramentas de análise de dados online foram aprimoradas e o mecanismo de comunicação com os usuários foi simplificado - através do Relatórios de problemas e soluções(no Windows Vista - Começar -> Painel de controle -> Sistema e Manutenção -> Relatórios e soluções de problemas -> Ver histórico de problemas) E Centro de Ação(no Windows 7). Então, no Windows Server 2008 e no Vista Service Pack 1, a capacidade de criar dumps locais tornou-se disponível, e no Windows 7 e no Windows Server 2008 R2, foi adicionada a capacidade de gerar exceções que não serão tratadas por manipuladores tradicionais e levarão a encerramento imediato do aplicativo e lançamento automático do mecanismo de relatório de erros do Windows, bem como a capacidade de especificar um processo externo - um manipulador de exceções, que será chamado para obter o nome do evento, parâmetros de relatório de erros e lançamento opcional do depurador.

Usando o Relatório de Erros do Windows

Vamos dar uma olhada rápida em como os desenvolvedores podem usar o Relatório de Erros do Windows para obter informações sobre travamentos e outros problemas com seus aplicativos. Começando pelo Windows Vista Windows por padrão, fornece um relatório de travamentos, congelamentos e falhas de kernel para todos os aplicativos - nenhuma alteração no código do aplicativo é necessária. Se necessário, o relatório inclui um mini-despejo de memória e um heap dump da aplicação. As aplicações requerem o uso de interfaces de programação nos casos em que é necessário enviar alguma aplicação específica; Informações adicionais. Como o kernel do Windows reporta automaticamente informações sobre exceções não tratadas, os aplicativos não precisam tratar exceções que causam erros fatais.

No caso de travamentos, congelamentos ou erros no nível do kernel do sistema operacional, o mecanismo de Relatório de Erros do Windows executa a seguinte sequência de ações:

  1. Ocorre um problema.
  2. O kernel do sistema operacional chama o WER.
  3. O WER coleta dados, cria um relatório e, se necessário, solicita ao usuário a confirmação do envio do relatório.
  4. Ao receber a confirmação, o WER envia um relatório à Microsoft (o chamado Watson Server).
  5. Caso o servidor necessite de dados adicionais, o WER os coleta e, se necessário, solicita a confirmação do usuário para enviá-los.
  6. Se o aplicativo estiver registrado para reinicialização (um tópico que discutimos anteriormente), o WER executará a função de aplicativo chamada indiretamente apropriada.
  7. Caso haja solução para o problema que originou a falha, o usuário é notificado por meio das ferramentas apropriadas do sistema operacional.

Dependendo da situação, o arquivo CAB pode conter vários tipos dumps, que podem ser distinguidos pela extensão do nome do arquivo (Tabela 1).

O aplicativo pode usar as seguintes funções para personalizar o conteúdo do relatório enviado à Microsoft - a função de registro instrui a Web a incluir os arquivos e blocos de memória especificados no relatório gerado.

Para incluir um arquivo em um relatório, é utilizada a função WerRegisterFile(), que é passada como parâmetros: o nome completo do arquivo, seu tipo (um dos valores WER_REGISTER_FILE_TYPE) e duas flags: WER_DELETE_FILE_WHEN_DONE, indicando que o arquivo deve ser excluído após o envio do relatório e WER_ANONYMOUS_DATA, indicando que o arquivo não contém dados privados. Valores possíveis os parâmetros WER_REGISTER_FILE_TYPE são fornecidos na tabela. 2.

Observe que a tarefa de gerar um dump de memória é atribuída ao desenvolvedor da aplicação - para resolvê-la, você pode usar, por exemplo, mecanismos de depuração descritos no SDK do Windows (consulte a função MiniDumpWriteDump()).

Para excluir um arquivo do relatório, utilize a função WerUnRegisterFile(), especificando como parâmetro o nome do arquivo excluído.

Na maioria dos cenários a referência arquivos adicionais ocorre apenas quando uma solicitação correspondente é recebida do servidor. No caso de envio de arquivos adicionais, é necessário utilizar a flag WER_ADD_ REGISTERED_DATA ao chamar a função WerReportSubmit() - falaremos sobre isso mais tarde.

Para incluir uma cópia de uma área de memória no relatório, é utilizada a função WerRegisterMemoryBlock(), cujos parâmetros são o endereço do início do bloco de memória a ser incluído e o tamanho deste bloco em bytes (o tamanho máximo do um bloco de memória é WER_MAX_MEM_BLOCK_SIZE). Para desincluir uma cópia de uma área de memória em um relatório, use a função WerUnRegisterMemoryBlock(). Se estiver enviando dados da memória, você deve usar o sinalizador WER_ADD_REGISTERED_DATA ao chamar a função WerReportSubmit().

As funções WerSetFlags() e WerGetFlags() podem ser utilizadas respectivamente para controlar o estado de um processo ao gerar um relatório de erros e obter informações de configuração.

O processo de geração e envio de um relatório consiste em diversas etapas. O relatório é inicializado chamando a função WerReportCreate(), que especifica o tipo de evento para o qual o relatório é criado, o tipo de relatório ( WerReportNonCritical- para falhas com possibilidade de recuperação e WerReportCritical - para falhas que causaram travamento da aplicação), um link para as informações incluídas no relatório (ver estrutura WER_REPORT_INFORMATION), e uma variável que conterá um link para o relatório gerado - ReportHandle.

Depois que o relatório for inicializado com sucesso, você precisará adicionar parâmetros do primeiro e do segundo grupos a ele. Os parâmetros do primeiro grupo são definidos usando a função WerReport-Set-Parameter(), que recebe um link para o relatório criado (resultado da execução bem-sucedida da função WerReportCreate), um conjunto de flags, o nome do parâmetro e seu valor (uma string Unicode de 16 bits terminando em zero).

Para ser incluído em um relatório parâmetros adicionaisÉ utilizada a função WerReportAddSecondaryParameter(), na qual é passado um link para o relatório, o nome do parâmetro e seu valor.

Além da possibilidade de incluir arquivos e instantâneos de áreas de memória nos relatórios, é possível transmitir dumps de memória como parte do relatório - para isso você pode usar a função WerReportAddDump(), cujos parâmetros incluem um link para o relatório , links para o processo e thread para o qual o dump foi criado, tipo de dump (um dos valores WER_DUMP_TYPE), informações de exceção (ponteiro para uma estrutura do tipo WER_EXCEPTION_INFORMATION), opções adicionais(tipo de dados WER_DUMP_CUSTOM_OPTIONS) e sinalizadores. Observe que o processo para o qual o dump é criado deve ter direitos de acesso STANDARD_RIGHTS_READ e PROCESS_QUERY_INFORMATION.

Para incluir arquivos no relatório, utilizamos a função WerReportAddFile(), para a qual passamos um link para o relatório, o nome completo do arquivo, o tipo de arquivo (WER_FILE_TYPE) e flags adicionais.

Além disso, os desenvolvedores têm a oportunidade de personalizar interface do usuário- selecionando informações exibidas no painel de diálogo do sistema. Para isso, é utilizada a função WerReportSetUI Option(), na qual é passado um link para o relatório, o tipo de interface do relatório (WER_REPORT_UI) e o valor da string exibida. A aplicação pode modificar qualquer um dos campos do elemento de interface, especificado por parâmetro WER_REPORT_UI; Cada chamada de função permite modificar apenas um campo. A função WerReportSetUIOption() pode ser chamada a qualquer momento durante a operação do aplicativo antes que o relatório seja enviado diretamente.

Depois que o relatório for gerado e configurado, usamos a função WerReportSubmit() para enviar o relatório. Os parâmetros desta função são um link para o relatório, o tipo de interface do usuário (direitos de administrador, confirmação de envio, etc.) e um conjunto de flags. Após o envio do relatório, o link para ele deve ser fechado utilizando a função WerReportCloseHandle().

Para desconectar um aplicativo do mecanismo de Relatório de Erros do Windows, use a função WerAddExcludedApplication() e, para reconectá-lo, use a função WerRemoveExcludedApplication().

As configurações do Relatório de Erros do Windows estão localizadas em duas ramificações do registro:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\Relatório de erros do Windows;
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Relatório de erros do Windows.

Maioria configurações úteis são mostrados na tabela. 3.

Conclusão

Nesta série de artigos, discutimos várias questões sobre como melhorar a estabilidade do aplicativo. Examinamos técnicas para evitar vazamentos de memória e impedir o congelamento de aplicativos, discutimos o uso do mecanismo de reinicialização e recuperação de aplicativos, que permite reiniciar aplicativos que bloquearam alguns recursos ou pararam de responder às mensagens do sistema, e o mecanismo de relatório de erros do Windows , que possibilita a coleta de dados sobre falhas ocorridas nas aplicações.

Nos seguintes artigos dedicados à sala de cirurgia Sistema Windows 7 para Desenvolvedores, veremos uma série de mudanças no nível do kernel que podem ser de interesse para desenvolvedores de aplicativos.

Para de funcionar ou funciona incorretamente) Windows cria um relatório de problemas que deve ser enviado para Microsoft(para encontrar uma solução para o problema).

Começando pelo sistema operacional , para substituir a “ferramenta de análise de falhas ou acidentes” Dr. Watson veio Relatório de erros do Windows (ER) – Serviço de registro Erros do Windows (outros nomes - , Relatórios de problemas e soluções).

Serviço de registro de erros do Windows representado pelos seguintes arquivos (todos localizados no diretório \Windows\System32\):

wer.dll (Biblioteca de mensagens de erro do Windows);

wercon.exe (Relatórios sobre problemas e suas soluções);

wercplsupport.dll ();

werdiagcontroller.dll (Controlador de diagnóstico WER);

WerFault.exe (Relatório de erros do Windows);

WerFaultSecure.exe (Relatórios de erros do Windows);

wermgr.exe (Relatório de problemas do Windows);

wersvc.dll (Serviço de registro de erros do Windows);

www.wertargets.wtl.

Quando um processo (programa) falha, o serviço Relatório de erros do Windows lança - na sessão do processo errôneo - seu ( WerFault.exe),

passando o id ( PID) processo em linha de comando WerFault:

Isso exibirá uma janela Microsoft Windows com uma mensagem de erro - "O trabalho parou<Название_программы>. Na próxima vez que você se conectar Janelas da Internet:


pode procurar uma maneira de eliminar esse erro" Quando você pressiona o botão Mostrar detalhes do problema


Você pode ver a assinatura do problema: Assinaturas de problemas são armazenadas em relatórios de erros, que são armazenados no diretório\Users\Master\AppData\Local\Microsoft\Windows\WER\ReportArchive\ , cada relatório está em uma pasta separada Relatório******** (Por exemplo, Relatório0a003e48 ), no arquivo.

Relatório.wer ), no arquivo:

Conteúdo aproximado do arquivo

Versão=1

EventType=APPCRASH

Hora do Evento=129234418886148269

TipodeRelatório=2

Consentimento=1

Resposta.type=4

Sig.Name=Nome do aplicativo

Sig.Value=iexplore.exe

Sig.Name=Versão do Aplicativo

Sig.Valor=8.0.6001.18928

Sig.Name=Carimbo de data e hora do aplicativo

Sig.Valor=4bdfa327

Sig.Name=Nome do módulo de erro

Sig.Value=mshtml.dll

Sig.Name=Versão do Aplicativo

Sig.Name=Versão do módulo de erro

Sig.Name=Carimbo de hora do módulo com erro

Sig.Value=4bdfb76d

Sig.Name=Código de exceção

Sig.Valor=c0000005

Sig.Name=Deslocamento de exceção

Sig.Valor=000da33f

DynamicSig.Name=Versão do SO

DynamicSig.Value=6.0.6002.2.2.0.768.3

DynamicSig.Name=Código do idioma

DynamicSig.Value=1049

DynamicSig.Name=Informação adicional 1

DynamicSig.Value=fd00

DynamicSig.Name=Informações adicionais 2

DynamicSig.Name=Informação adicional 1

DynamicSig.Name=Informações adicionais 3

DynamicSig.Name=Informações adicionais 4

DynamicSig.Value= UI=C:\Arquivos de Programas\ Internet Explorer

\iexplore.exe

UI=O Internet Explorer parou de funcionar

UI=O Windows pode pesquisar na Internet uma solução para esse erro.

UI=Procure uma solução para o problema na Internet e feche o programa

UI=Verifique se há uma correção on-line mais tarde e feche o programa

UI=Fechar programa

FriendlyEventName=Parar trabalho

ConsentKey=APPCRASH

AppName=Internet Explorer

AppPath=C:\Arquivos de Programas\Internet Explorer\iexplore.exe Como iniciar o serviço

Relatórios sobre problemas e suas soluções Clique;


Iniciar -> Painel de Controle -> Relatórios sobre problemas e suas soluções - na janela Relatórios sobre problemas e suas soluções no cardápio Tarefas

· As seguintes opções estão disponíveis: Procure novas soluções

(é necessária uma conexão aberta com a Internet); O relatório de erros é habilitado por padrão no XP, Vista e Windows 7. Quando um aplicativo encontra um erro, uma descrição detalhada do erro aparece e você será solicitado a enviar essas informações à Microsoft. obtido de milhões de PCs em todo o mundo e ajuda na criação de patches e service packs. Em alguns casos análise independente informações de erro ajudam a resolver o problema. No entanto, em alguns casos este comportamento do sistema não é aceitável e você gostaria de desabilitar esta funcionalidade. Neste artigo, veremos métodos para desativar o relatório de erros em todos os sistemas.

Janelas 7

Abra o menu iniciar e digite na barra de pesquisa configurações de relatório de problemas ou vá para Central de ações -> Alterar configurações da Central de ações -> Configurações de relatório de problemas. Se você usou o método de pesquisa, selecione “Escolher como relatar problemas”:

Você pode então selecionar facilmente a opção necessária na lista.

Desative o relatório de erros em Windows 7 usando políticas de grupo

Comentário: Este método não disponível para famílias Versões do Windows 7.

Clique em Iniciar e entre gpedit.msc na barra de pesquisa e pressione Enter.

O editor local será aberto política de grupo. Em seguida, você precisa ir para a seção Configuração do usuário\Modelos administrativos\Componentes do Windows\Relatório de erros do Windows e ir para a política Desative o relatório de erros do Windows.

Altere o status da política de Não configurado para Ativado, clique em Aplicar e OK e saia do Editor de política de grupo.

Desativando o relatório de erros no Vista

Para desativar o relatório de erros no Vista, clique em Iniciar e abra o Painel de Controle.

Mude o painel de controle para o modo de exibição clássico e clique em Relatórios de problemas e soluções.

Como você pode ver, temos duas opções. Se você escolher Peça-me para verificar se ocorre algum problema, o relatório de erros será habilitado e você terá a opção de enviar as informações para a Microsoft ou não. Se você escolher Verifique soluções automaticamente (recomendado) todos os dados serão enviados para a Microsoft automaticamente. Ambas as opções não são adequadas para nós, pois queremos desabilitar completamente esta funcionalidade, por isso clicaremos no link Configurações avançadas.

Na janela que aparece, na seção Para meus programas, relatar problemas é… selecione Desligado e clique em OK.

Como você pode ver agora, as opções anteriores não são editáveis.

Clique em Fechar na mensagem informando que o relatório de erros foi desativado.

Desativando o relatório de erros no XP

Para desativar o relatório de erros no XP, clique com o botão direito no ícone " Meu computador" e selecione Propriedades. Na janela que se abre, vá até a aba Adicionalmente e pressione o botão Relatório de erros.

Na janela que se abre, selecione a opção Desativar relatório de erros. Desmarque a opção Mas avise-me quando ocorrer um erro crítico.

Estávamos nos perguntando onde comprar roupas boas e baratas para uma criança. Eu recomendo loja online de estoque infantil com uma grande seleção e preços baixos.

Problemas