Felsöka undantag i .NET-program med hjälp av felsökningsprogrammet för ögonblicksbilder
När det här är aktiverat samlar Snapshot Debugger automatiskt in en ögonblicksbild av källkoden och variablerna när ett undantag inträffar i ditt live-.NET-program. Felsökningsprogrammet för ögonblicksbilder i Application Insights:
- Övervakar systemgenererade loggar från webbappen.
- Samlar in ögonblicksbilder på de vanligaste undantagen.
- Innehåller information som du behöver för att diagnostisera problem i produktion.
Läs mer om processerna för felsökning av ögonblicksbilder och uppladdning av ögonblicksbilder.
Program och miljöer som stöds
I det här avsnittet visas de program och miljöer som stöds.
Appar
Ögonblicksbildsamling är tillgänglig för:
- .NET Framework 4.6.2 och senare versioner.
- .NET 6.0 eller senare i Windows.
Miljöer
Följande miljöer stöds:
- Azure App Service
- Azure Functions
- Azure Cloud Services som kör OS-familj 4 eller senare
- Azure Service Fabric körs på Windows Server 2012 R2 eller senare
- Azure Virtual Machines och Azure Virtual Machine Scale Sets som kör Windows Server 2012 R2 eller senare
- Lokala virtuella eller fysiska datorer som kör Windows Server 2012 R2 eller senare eller Windows 8.1 eller senare
Kommentar
Klientprogram (till exempel WPF, Windows Forms eller UWP) stöds inte.
Förutsättningar för att använda felsökningsprogrammet för ögonblicksbilder
Paket och konfigurationer
- Inkludera NuGet-paketet För ögonblicksbildinsamlare i ditt program.
- Konfigurera samlingsparametrar i
ApplicationInsights.config
.
Behörigheter
- Kontrollera att du har lagts till i application insights-felsökningsrollen för application insights-målögonblicksbilden.
Så här fungerar felsökningsprogrammet för ögonblicksbilder
Felsökningsprogrammet för ögonblicksbilder implementeras som en Application Insights-telemetriprocessor. När programmet körs läggs telemetriprocessorn snapshot debugger till i programmets systemgenererade loggpipeline.
Viktigt!
Ögonblicksbilder kan innehålla personuppgifter eller annan känslig information i variabel- och parametervärden. Ögonblicksbildsdata lagras i samma region som application insights-resursen.
Felsökningsprocess för ögonblicksbilder
Felsökningsprocessen för ögonblicksbilder startar och slutar med TrackException
-metoden. En processögonblicksbild är en pausad klon av den pågående processen, så att användarna upplever lite eller inget avbrott. I ett typiskt scenario:
Programmet genererar
TrackException
.Felsökningsprogrammet för ögonblicksbilder övervakar undantag när de genereras genom att prenumerera på
AppDomain.CurrentDomain.FirstChanceException
händelsen.En räknare ökas för problem-ID:t.
- När räknaren når
ThresholdForSnapshotting
värdet läggs problem-ID:t till i en samlingsplan.
Kommentar
Standardvärdet
ThresholdForSnapshotting
är 1. Med det här värdet måste appen utlösa samma undantag två gånger innan en ögonblicksbild skapas.- När räknaren når
Undantagshändelsens problem-ID beräknas och jämförs med problem-ID:na i samlingsplanen.
Om det finns en matchning mellan problem-ID:t skapas en ögonblicksbild av den process som körs.
- Ögonblicksbilden tilldelas en unik identifierare och undantaget stämplas med den identifieraren.
Kommentar
Genereringshastigheten för ögonblicksbilder begränsas av inställningen
SnapshotsPerTenMinutesLimit
. Som standard är gränsen en ögonblicksbild var 10:e minut.FirstChanceException
När hanteraren har returnerats bearbetas undantaget som vanligt.Undantaget når
TrackException
metoden igen och rapporteras till Application Insights, tillsammans med ögonblicksbildidentifieraren.
Kommentar
Ange IsEnabledInDeveloperMode
till true
om du vill generera ögonblicksbilder när du felsöker i Visual Studio.
Uppladdningsprocess för ögonblicksbilder
Medan felsökningsprocessen för ögonblicksbilder fortsätter att köras och hantera trafik till användare med lite avbrott, överlämnas ögonblicksbilden till uppladdningsprocessen för ögonblicksbilder. I ett typiskt scenario laddar du upp ögonblicksbilden:
Skapar en minidump.
Laddar upp minidumpen till Application Insights, tillsammans med relevanta symbolfiler (.pdb).
Kommentar
Högst 50 ögonblicksbilder per dag kan laddas upp.
Om du har aktiverat felsökningsprogrammet för ögonblicksbilder men inte ser ögonblicksbilder kan du läsa felsökningsguiden.
Uppgradera felsökningsprogrammet för ögonblicksbilder
Automatiska uppgraderingar av ögonblicksbildsfelsökaren via det inbyggda, förinstallerade Application Insights-webbplatstillägget.
Att manuellt lägga till ett Application Insights-webbplatstillägg för att hålla Snapshot Debugger uppdaterat är inaktuellt.
Omkostnader
Felsökningsprogrammet för ögonblicksbilder är utformat för användning i produktionsmiljöer. Standardinställningarna innehåller hastighetsbegränsningar för att minimera påverkan på dina program.
Du kan dock uppleva små processor-, minnes- och I/O-omkostnader som är associerade med felsökningsprogrammet för ögonblicksbilder, till exempel:
- När ett undantag utlöses i programmet
- Om undantagshanteraren bestämmer sig för att skapa en ögonblicksbild
- När
TrackException
anropas
Det finns ingen extra kostnad för att lagra data som samlas in av Snapshot Debugger.
Se exempelscenarier där du kan uppleva felsökningskostnader för ögonblicksbilder.
Begränsningar
I det här avsnittet beskrivs begränsningar för felsökningsprogrammet för ögonblicksbilder.
Datakvarhållning
Ögonblicksbilder av felsökning lagras i 15 dagar. Standardprincipen för datakvarhållning anges per program. Om du behöver öka det här värdet kan du begära en ökning genom att öppna ett supportärende i Azure Portal. För varje Application Insights-instans tillåts högst 50 ögonblicksbilder per dag.
Publicera symboler
Felsökningsprogrammet för ögonblicksbilder kräver symbolfiler på produktionsservern för att:
- Avkoda variabler
- Tillhandahålla en felsökningsupplevelse i Visual Studio
Som standard publicerar Visual Studio 2017 version 15.2+ symboler för versionsversioner när den publiceras till App Service.
I tidigare versioner måste du lägga till följande rad i publiceringsprofilfilen
.pubxml
så att symboler publiceras i versionsläge:<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
För Azure Compute och andra typer kontrollerar du att symbolfilerna antingen är:
- I samma mapp i huvudprogrammet
.dll
(vanligtviswwwroot/bin
), eller - Tillgänglig på den aktuella sökvägen.
Mer information om de olika symbolalternativen som är tillgängliga finns i Visual Studio-dokumentationen. För bästa resultat rekommenderar vi att du använder Full, Portable eller Embedded.
Optimerade versioner
I vissa fall kan lokala variabler inte visas i versionsversioner på grund av optimeringar som tillämpas av JIT-kompilatorn.
I App Service kan dock felsökningsprogrammet för ögonblicksbilder avoptimera utkastningsmetoder som ingår i insamlingsplanen.
Dricks
Installera Application Insights-webbplatstillägget i din instans av App Service för att få stöd för avoptimisering.
Nästa steg
Aktivera Application Insights Snapshot-felsökningsprogrammet för ditt program: