Ögonblicksbilder för felsökning av undantag i .NET-appar

När ett undantag inträffar kan du automatiskt samla in en ögonblicksbild av felsökningen från ditt live-webbprogram. Ögonblicksbilden visar tillståndet för källkoden och variablerna när undantaget utlöstes. Den Snapshot Debugger i Azure Application Insights övervakar undantagstelemetri från webbappen. Den samlar in ögonblicksbilder av dina undantag så att du har den information du behöver för att diagnostisera problem i produktionen. Inkludera NuGet-paketet för ögonblicksbildsinsamlaren i ditt program och konfigurera samlingsparametrar i ApplicationInsights.config. Ögonblicksbilder visas i undantag i Application Insights portalen.

Du kan visa de här ögonblicksbilderna i portalen, se anropsstacken och inspektera variablerna på varje nivå av stacken. För att få en mer kraftfull felsökningsupplevelse med källkod öppnar du ögonblicksbilder med Visual Studio 2019 Enterprise. I Visual Studio kan du även ställa in Snappoints så att de interaktivt tar ögonblicksbilder utan att vänta på ett undantag.

Ögonblicksbilder av felsökning lagras i 15 dagar. Den här bevarandeprincipen anges per program. Om du behöver öka det här värdet kan du begära en ökning genom att öppna ett supportfall i Azure Portal.

Aktivera Application Insights Snapshot Debugger för ditt program

Samlingen med ögonblicksbilder är tillgänglig för:

  • .NET Framework och ASP.NET program som kör .NET Framework 4.5 eller senare.
  • .NET Core och ASP.NET Core-program som kör .NET Core 2.1 (LTS) eller 3.1 (LTS) på Windows.
  • .NET 5.0-program i Windows.

Vi rekommenderar inte att du använder .NET Core 2.0, 2.2 eller 3.0 eftersom de inte har stöd.

Följande miljöer stöds:

Anteckning

Klientprogram (till exempel WPF, Windows Forms eller UWP) stöds inte.

Om du har aktiverat Snapshot Debugger men inte ser ögonblicksbilder kan du läsa vår felsökningsguide.

Bevilja behörigheter

Åtkomst till ögonblicksbilder skyddas av rollbaserad åtkomstkontroll i Azure (Azure RBAC). För att kunna se en ögonblicksbild måste en prenumerationsägare först lägga till dig i den roll som krävs.

Anteckning

Ägare och deltagare har inte den här rollen automatiskt. Om de vill visa ögonblicksbilder måste de lägga till sig själva i rollen.

Prenumerationsägare bör tilldela Application Insights Snapshot Debugger rollen till användare som ska inspektera ögonblicksbilder. Den här rollen kan tilldelas enskilda användare eller grupper av prenumerationsägare för Application Insights eller dess resursgrupp eller prenumeration.

  1. Gå till Application Insights resurs i Azure Portal.
  2. Klicka på Åtkomstkontroll (IAM).
  3. Klicka på knappen +Lägg till rolltilldelning.
  4. Välj Application Insights Snapshot Debugger i listrutan Roller.
  5. Sök efter och ange ett namn som användaren ska lägga till.
  6. Klicka på knappen Spara för att lägga till användaren i rollen.

Viktigt

Observera att ögonblicksbilder kan innehålla personuppgifter eller annan känslig information i variabel- och parametervärden. Ögonblicksbildsdata lagras i samma region som din App Insights-resurs.

Visa ögonblicksbilder i portalen

När ett undantag har inträffat i programmet och en ögonblicksbild har skapats bör du ha ögonblicksbilder att visa. Det kan ta 5 till 10 minuter från ett undantag som inträffar till en ögonblicksbild som är klar och kan visas från portalen. Om du vill visa ögonblicksbilder går du till fönstret Fel och väljer knappen Åtgärder när du visar fliken Åtgärder eller väljer knappen Undantag när du visar fliken Undantag:

Sidan Fel

Välj en åtgärd eller ett undantag i den högra rutan för att öppna fönstret Transaktionsinformation från slutet till slut och välj sedan undantagshändelsen. Om en ögonblicksbild är tillgänglig för det angivna undantaget visas knappen Open Debug Snapshot (Öppna ögonblicksbild för felsökning) i den högra rutan med information om undantaget.

Öppna knappen Ögonblicksbild för felsökning vid undantag

I vyn Ögonblicksbild av felsökning visas en anropsstack och ett variabelfönster. När du väljer bildrutor i anropsstacken i anropsstackfönstret kan du visa lokala variabler och parametrar för det funktionsanropet i variabelfönstret.

Visa ögonblicksbild av felsökning i portalen

Ögonblicksbilder kan innehålla känslig information och kan som standard inte visas. Om du vill visa ögonblicksbilder måste du ha Application Insights Snapshot Debugger rollen tilldelad till dig.

Visa ögonblicksbilder i Visual Studio 2017 Enterprise eller högre

  1. Klicka på knappen Ladda ned ögonblicksbild för att ladda ned en fil som kan öppnas av .diagsession Visual Studio Enterprise.

  2. För att öppna .diagsession filen måste du ha Snapshot Debugger Visual Studio-komponenten installerad. Komponenten Snapshot Debugger är en obligatorisk komponent i ASP.net-arbetsbelastningen i Visual Studio och kan väljas från listan Enskild komponent i Visual Studio installationsprogrammet. Om du använder en version av Visual Studio före Visual Studio 2017 version 15.5 måste du installera tillägget från Visual Studio Marketplace.

  3. När du har öppnat ögonblicksbildfilen visas sidan Minidump-felsökning i Visual Studio. Klicka på Felsök hanterad kod för att börja felsöka ögonblicksbilden. Ögonblicksbilden öppnas till kodraden där undantaget utlöstes så att du kan felsöka processens aktuella tillstånd.

    Visa ögonblicksbild av felsökning i Visual Studio

Den hämtade ögonblicksbilden innehåller alla symbolfiler som hittades på din webbprogramserver. Dessa symbolfiler krävs för att koppla ögonblicksbilddata till källkoden. För App Service bör du aktivera symboldistribution när du publicerar dina webbappar.

Så här fungerar ögonblicksbilder

Den Snapshot Collector implementeras som en Application Insights Telemetry Processor. När programmet körs läggs Snapshot Collector till i programmets telemetripipeline. Varje gång ditt program anropar TrackExceptionberäknar Snapshot Collector ett problem-ID från typen av undantag som utlösts och metoden throwing. Varje gång programmet anropar TrackException ökas en räknare för lämpligt problem-ID. När räknaren når värdet ThresholdForSnapshotting läggs problem-ID:t till i en samlingsplan.

Den Snapshot Collector övervakar även undantag när de inlöses genom att prenumerera på händelsen AppDomain.CurrentDomain.FirstChanceException. När händelsen uppstår beräknas problem-ID:t för undantaget och jämförs med problem-ID:n i samlingsplanen. Om det finns en matchning skapas en ögonblicksbild av den process som körs. Ögonblicksbilden tilldelas en unik identifierare och undantaget stämplas med den identifieraren. När FirstChanceException-hanteraren returnerar bearbetas undantaget som vanligt. Slutligen når undantaget metoden TrackException igen där den, tillsammans med identifieraren för ögonblicksbilden, rapporteras till Application Insights.

Huvudprocessen fortsätter att köras och betjänar trafik till användare med lite avbrott. Under tiden lämnas ögonblicksbilden över till Snapshot Uploader-processen. Snapshot Uploader skapar en minidump och laddar upp den till Application Insights tillsammans med alla relevanta symbolfiler (.pdb).

Tips

  • En processögonblicksbild är en pausad klon av den process som körs.
  • Det tar cirka 10 till 20 millisekunder att skapa ögonblicksbilden.
  • Standardvärdet för ThresholdForSnapshotting är 1. Detta är också det minsta värdet. Därför måste din app utlösa samma undantag två gånger innan en ögonblicksbild skapas.
  • Ange IsEnabledInDeveloperMode till sant om du vill generera ögonblicksbilder vid felsökning i Visual Studio.
  • Frekvensen för skapande av ögonblicksbilder begränsas av SnapshotsPerTenMinutesLimit inställningen. Som standard är gränsen en ögonblicksbild var tionde minut.
  • Högst 50 ögonblicksbilder per dag kan laddas upp.

Begränsningar

Standardperioden för datalagring är 15 dagar. För varje Application Insights instans tillåts ett maximalt antal 50 ögonblicksbilder per dag.

Publicera symboler

Den Snapshot Debugger kräver symbolfiler på produktionsservern för att avkoda variabler och för att ge en felsökningsupplevelse i Visual Studio. Version 15.2 (eller senare) av Visual Studio 2017 publicerar symboler för versionsbyggen som standard 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 finns i samma mapp i huvudprogrammets DLL-fil (vanligtvis ) eller är tillgängliga på den wwwroot/bin aktuella sökvägen.

Anteckning

Mer information om de olika symbolalternativ 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 byggen

I vissa fall kan lokala variabler inte visas i versioner på grund av optimeringar som tillämpas av JIT-kompilatorn. I Azure App Services kan dock Snapshot Collector deoptimera utlösningsmetoder som ingår i insamlingsplanen.

Tips

Installera Application Insights platstillägget i App Service för att få deoptimeringsstöd.

Nästa steg

Aktivera Application Insights Snapshot Debugger för ditt program:

Utöver Application Insights Snapshot Debugger: