Dela via


Använda WER

Från och med Windows Vista tillhandahåller Windows krasch-, icke-svars- och kernelfelrapportering som standard utan att kräva ändringar i ditt program. Rapporten kommer att innehålla information om minidumpar och heapdumpar vid behov. Program använder i stället WER API för att skicka programspecifika problemrapporter till Microsoft.

Eftersom Windows automatiskt rapporterar ohanterade undantag bör programmet inte hantera allvarliga undantag. Om den felaktiga eller inte svarande processen är interaktiv visar WER ett användargränssnitt som informerar användaren om problemet. Ett program anses inte svara om det inte svarar på Windows-meddelanden under fem sekunder medan användaren försöker interagera med programmet.

Windows-felrapporteringsflöde för krascher, icke-svarsfel och kernelfel

Följande visar de steg som inträffar för en programkrasch, icke-svar eller kernelfel.

  1. Problemhändelsen inträffar.
  2. Operativsystemet anropar WER.
  3. WER samlar in data, skapar en rapport och ber användaren om medgivande (om det behövs).
  4. WER skickar rapporten till Microsoft (Watson Server) om användaren har samtyckt.
  5. Om Watson-servern begär ytterligare data samlar WER in data och ber användaren om medgivande (om det behövs).
  6. Om programmet har registrerats för återställning och omstart kör WER de registrerade återanropsfunktionerna medan data komprimeras och skickas till Microsoft (om användaren samtyckt).
  7. Om ett svar på problemet är tillgängligt från Microsoft meddelas användaren.

Program kan använda följande funktioner för att anpassa innehållet i rapporten som skickas till Microsoft. Registreringsfunktionerna instruerar WER att inkludera specifika filer och minnesblock i felrapporten som skapas.

Windows-felrapporteringsflöde för allmän händelserapportering

Följande steg visar hur program kan få en felrapport för ett feltillstånd som inte är allvarligt.

  1. Den icke-dödliga problemhändelsen inträffar.
  2. Programmet identifierar händelsen och använder följande sekvens av funktionsanrop för att generera rapporten.
    1. Anropa funktionen WerReportCreate för att skapa rapporten.
    2. Anropa funktionen WerReportSetParameter för att ange rapportparametrarna.
    3. Anropa funktionen WerReportAddFile för att lägga till filer i rapporten.
    4. Anropa funktionen WerReportAddDump för att lägga till en minidump i rapporten (om det behövs).
    5. Anropa funktionen WerReportSubmit för att skicka rapporten.
    6. Anropa WerReportCloseHandle för att frigöra resurser.
  3. Beroende på de specifika alternativ som används när du anropar funktionerna i steg 2 slutför WER felrapportering. WER säkerställer att rapporteringen görs i enlighet med de principer som angetts av användaren. Till exempel skickar WER rapporten till Microsoft, köar rapporten och visar lämpliga användargränssnitt för användaren.

Exkludering av ett program från Windows-felrapportering

Om du vill undanta ditt program från Windows-felrapportering använder du funktionen WerAddExcludedApplication. Om du vill återställa felrapportering för ditt program använder du funktionen WerRemoveExcludedApplication.

Återställa data automatiskt och starta om ett felaktigt program

Ett program kan använda Application Recovery och Restart för att spara data och tillståndsinformation innan programmet avslutas på grund av ett ohanterat undantag eller när programmet slutar svara. Programmet startas också om, om det begärs. Mer information finns i Programåterställning och Starta om.

Äldre API

Ett program kan rapportera ett fel genom att anropa funktionen ReportFault. Du bör dock inte använda funktionen ReportFault om du inte har ett mycket specifikt krav på att operativsystemets standardbeteende för felrapportering inte kan uppfyllas.

Om felrapportering är aktiverat visar systemet en dialogruta för användaren som anger att programmet har stött på ett problem och stängs. Om det finns ett felsökningsprogram som konfigurerats i HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug-nyckeln får användaren möjlighet att starta felsökningsprogrammet. Användaren får också möjlighet att skicka en rapport till Microsoft. Om användaren skickar rapporten visar systemet en annan dialogruta där användaren tackas för rapporten och en länk till mer information visas.

Felrapporteringssystemet stöder följande åtgärdslägen.

Driftläge Beskrivning
Rapportering av delat minne Om programmets säkerhetskontext är samma som säkerhetskontexten för den inloggade användaren använder felrapporteringssystemet ett block med delat minne för kommunikation. Det här läget kan inte användas med manifestrapporteringsläge.
Manifestrapportering Om programmets säkerhetskontext inte är samma som säkerhetskontexten för den inloggade användaren använder felrapporteringssystemet en fil för kommunikation. Det här läget används också för att rapportera program som inte svarar och kernelfel. Det här läget kan inte användas med rapportläge för delat minne.
Internetrapportering Felrapporteringssystemet skickar alla data till Microsoft via Internet. Det här är standardåtgärdsläget. Den kan inte användas med företagsrapporteringsläge. Det här läget används när det inte finns någon företagsuppladdningssökväg som angetts av administratören.
Företagsrapportering Felrapporteringssystemet skickar alla data till en filresurs i stället för att ladda upp dem direkt till Microsoft. Detta gör att företagets IT-chefer kan granska data innan de skickas till Microsoft. Det här läget används när en företagsuppladdningssökväg har angetts av administratören. Den kan inte användas med Internetrapporteringsläge.
Huvudlös rapportering Felrapporteringssystemet visar inga dialogrutor för användaren. Detta gör att företagets IT-chefer kan samla in felrapporter från sina anställda hela tiden. Det här läget används när rapportering aktiveras av administratören, men meddelandet är inaktiverat. Den kan endast användas med företagsrapporteringsläge.

Om du vill undanta programmet från felrapportering använder du funktionen AddERExcludedApplication.