Fouten opsporen in momentopnamen op uitzonderingen in .NET-appsDebug snapshots on exceptions in .NET apps

Wanneer er een uitzondering optreedt, kunt u automatisch een momentopname voor foutopsporing verzamelen van uw live webtoepassing.When an exception occurs, you can automatically collect a debug snapshot from your live web application. De momentopname toont de status van de broncode en variabelen op het moment dat de uitzondering is opgetreden.The snapshot shows the state of source code and variables at the moment the exception was thrown. De Snapshot Debugger (preview) in Azure Application Insights bewaakt uitzonderingstelemetrie van uw web-app.The Snapshot Debugger (preview) in Azure Application Insights monitors exception telemetry from your web app. Deze verzamelt momentopnamen op uw uitzonderingen boven activerende zodat u de informatie die u nodig hebt om problemen in de productieomgeving te diagnosticeren.It collects snapshots on your top-throwing exceptions so that you have the information you need to diagnose issues in production. Neem het snap shot Collector NuGet-pakket op in uw toepassing en configureer optioneel verzamelings parameters in ApplicationInsights. config. Moment opnamen worden weer gegeven op uitzonde ringen in de Application Insights Portal.Include the Snapshot collector NuGet package in your application, and optionally configure collection parameters in ApplicationInsights.config. Snapshots appear on exceptions in the Application Insights portal.

U kunt foutopsporingsmomentopnamen in het portaal bekijken om de aanroepstack te zien en variabelen inspecteren bij elk aanroepstackframe.You can view debug snapshots in the portal to see the call stack and inspect variables at each call stack frame. Open moment opnamen met Visual Studio 2019 Enter prise voor een krachtigere fout opsporing met de bron code.To get a more powerful debugging experience with source code, open snapshots with Visual Studio 2019 Enterprise. In Visual Studio, kunt u ook Snappoints om interactief momentopnamen te instellen zonder te wachten op een uitzondering.In Visual Studio, you can also set Snappoints to interactively take snapshots without waiting for an exception.

Debug-moment opnamen worden 15 dagen bewaard.Debug snapshots are stored for 15 days. Deze bewaarbeleid is ingesteld op basis van de per toepassing.This retention policy is set on a per-application basis. Als u nodig hebt om deze waarde te verhogen, kunt u een toename van aanvragen door een ondersteuningsaanvraag opent in de Azure-portal.If you need to increase this value, you can request an increase by opening a support case in the Azure portal.

Application Insights Snapshot Debugger inschakelen voor uw toepassingEnable Application Insights Snapshot Debugger for your application

Verzameling van de momentopname is beschikbaar voor:Snapshot collection is available for:

  • .NET framework en ASP.NET-toepassingen met .NET Framework 4.5 of hoger..NET Framework and ASP.NET applications running .NET Framework 4.5 or later.
  • .NET core 2.0 en ASP.NET Core 2.0-toepassingen worden uitgevoerd op Windows..NET Core 2.0 and ASP.NET Core 2.0 applications running on Windows.

De volgende omgevingen worden ondersteund:The following environments are supported:

Notitie

Client-toepassingen (bijvoorbeeld WPF, Windows Forms of UWP) worden niet ondersteund.Client applications (for example, WPF, Windows Forms or UWP) are not supported.

Raadpleeg de gids voor het oplossen van problemenals u snapshot debugger hebt ingeschakeld, maar geen moment opnamen ziet.If you've enabled Snapshot Debugger but aren't seeing snapshots, check our Troubleshooting guide.

Machtigingen verlenenGrant permissions

Toegang tot momentopnamen is beveiligd met op rollen gebaseerd toegangsbeheer (RBAC).Access to snapshots is protected by role-based access control (RBAC). Als u wilt controleren van een momentopname, moet u eerst worden toegevoegd aan de benodigde rol door de eigenaar van een abonnement.To inspect a snapshot, you must first be added to the necessary role by a subscription owner.

Notitie

Eigenaren en medewerkers automatisch geen deze rol.Owners and contributors do not automatically have this role. Als ze momentopnamen weergeven willen, moeten ze zelf toevoegen aan de rol.If they want to view snapshots, they must add themselves to the role.

Eigenaars van abonnementen toe te kennen de Application Insights Snapshot Debugger rol voor gebruikers die zullen momentopnamen inspecteren.Subscription owners should assign the Application Insights Snapshot Debugger role to users who will inspect snapshots. Deze rol kan worden toegewezen aan individuele gebruikers of groepen door abonnementseigenaren voor Application Insights-resource van het doel of de resourcegroep of abonnement.This role can be assigned to individual users or groups by subscription owners for the target Application Insights resource or its resource group or subscription.

  1. Navigeer naar de Application Insights-resource in Azure portal.Navigate to the Application Insights resource in the Azure portal.
  2. Klik op Toegangsbeheer (IAM) .Click Access control (IAM).
  3. Klik op de + roltoewijzing toevoegen knop.Click the +Add role assignment button.
  4. Selecteer Application Insights Snapshot Debugger uit de rollen vervolgkeuzelijst.Select Application Insights Snapshot Debugger from the Roles drop-down list.
  5. Zoek en voer een naam voor de gebruiker toe te voegen.Search for and enter a name for the user to add.
  6. Klik op de opslaan om toe te voegen van de gebruiker aan de rol.Click the Save button to add the user to the role.

Belangrijk

Momentopnamen kunnen mogelijk persoonlijke en andere gevoelige gegevens in waarden van variabelen en parameter bevatten.Snapshots can potentially contain personal and other sensitive information in variable and parameter values.

Moment opnamen weer geven in de portalView Snapshots in the Portal

Nadat er een uitzonde ring is opgetreden in uw toepassing en er een moment opname is gemaakt, moet u moment opnamen hebben om weer te geven.After an exception has occurred in your application and a snapshot has been created, you should have snapshots to view. Het kan 5 tot 10 minuten duren als er een uitzonde ring optreedt in een moment opname die in de portal kan worden weer gegeven.It can take 5 to 10 minutes from an exception occurring to a snapshot ready and viewable from the portal. Als u moment opnamen wilt weer geven, selecteert u in het deel venster fout de knop bewerkingen bij het weer geven van het tabblad bewerkingen of selecteert u de knop uitzonde ringen bij het weer geven van het tabblad uitzonde ringen:To view snapshots, in the Failure pane, select the Operations button when viewing the Operations tab, or select the Exceptions button when viewing the Exceptions tab:

Pagina fouten

Selecteer een bewerking of uitzonde ring in het rechterdeel venster om het deel venster end-to-end trans actie Details te openen en selecteer vervolgens de uitzonderings gebeurtenis.Select an operation or exception in the right pane to open the End-to-End Transaction Details pane, then select the exception event. Als er een moment opname beschikbaar is voor de gegeven uitzonde ring, wordt in het rechterdeel venster een knop voor het maken van een moment opname met details weer gegeven met informatie over de uitzonde ring.If a snapshot is available for the given exception, an Open Debug Snapshot button appears on the right pane with details for the exception.

De knop openen fouten opsporen in momentopname van uitzondering

In de weergave fouten opsporen in momentopname ziet u een aanroepstack en een deelvenster Variabelen.In the Debug Snapshot view, you see a call stack and a variables pane. Wanneer u frames van de aanroepstack in het deelvenster met call stack selecteert, vindt u lokale variabelen en parameters voor deze functie aanroepen in het deelvenster Variabelen.When you select frames of the call stack in the call stack pane, you can view local variables and parameters for that function call in the variables pane.

Weergave fouten opsporen in momentopname in de portal

Momentopnamen kunnen gevoelige gegevens bevatten, en standaard ze niet kan worden weergegeven.Snapshots might include sensitive information, and by default they aren't viewable. Als u momentopnamen, hebt u de Application Insights Snapshot Debugger rol die aan u zijn toegewezen.To view snapshots, you must have the Application Insights Snapshot Debugger role assigned to you.

Moment opnamen weer geven in Visual Studio 2017 Enter prise of hogerView Snapshots in Visual Studio 2017 Enterprise or above

  1. Klik op de knop moment opname downloaden om een .diagsession bestand te downloaden dat door Visual Studio Enter prise kan worden geopend.Click the Download Snapshot button to download a .diagsession file, which can be opened by Visual Studio Enterprise.

  2. Als u het .diagsession bestand wilt openen, moet u het onderdeel Snapshot Debugger Visual Studio hebben geïnstalleerd.To open the .diagsession file, you need to have the Snapshot Debugger Visual Studio component installed. Het Snapshot Debugger onderdeel is een vereist onderdeel van de ASP.net-werk belasting in Visual Studio en kan worden geselecteerd in de lijst met afzonderlijke onderdelen in het Visual Studio-installatie programma.The Snapshot Debugger component is a required component of the ASP.net workload in Visual Studio and can be selected from the Individual Component list in the Visual Studio installer. Als u een versie van Visual Studio gebruikt die ouder is dan Visual Studio 2017 versie 15,5, moet u de uitbrei ding installeren vanuit de Visual Studio Marketplace.If you are using a version of Visual Studio prior to Visual Studio 2017 version 15.5, you will need to install the extension from the Visual Studio Marketplace.

  3. Nadat u de momentopnamebestand opent, wordt de pagina Minidump foutopsporing in Visual Studio weergegeven.After you open the snapshot file, the Minidump Debugging page in Visual Studio appears. Klik op fouten opsporen in beheerde Code foutopsporing van de momentopname te starten.Click Debug Managed Code to start debugging the snapshot. De momentopname wordt geopend aan de coderegel waar de uitzondering is opgetreden, zodat u kunt fouten opsporen in de huidige status van het proces.The snapshot opens to the line of code where the exception was thrown so that you can debug the current state of the process.

    Weergave-momentopname voor foutopsporing in Visual Studio

De momentopname van het gedownloade bevat symboolbestanden die zijn gevonden op uw webserver van de toepassing.The downloaded snapshot includes any symbol files that were found on your web application server. Deze symboolbestanden moet momentopname van de gegevens koppelen met de broncode.These symbol files are required to associate snapshot data with source code. Voor App Service-apps, zorg ervoor dat u het symbool implementatie in te schakelen wanneer u uw web-apps publiceren.For App Service apps, make sure to enable symbol deployment when you publish your web apps.

De werking van momentopnamenHow snapshots work

De Snapshot Collector wordt geïmplementeerd als een Application Insights Telemetry Processor.The Snapshot Collector is implemented as an Application Insights Telemetry Processor. Wanneer uw toepassing wordt uitgevoerd, wordt de telemetrie-Processor van Snapshot Collector wordt toegevoegd aan van de toepassing telemetrie pijplijn.When your application runs, the Snapshot Collector Telemetry Processor is added to your application's telemetry pipeline. Telkens wanneer die uw toepassing aanroepen TrackException, de Snapshot Collector berekent een probleem-ID van het type uitzondering en de activerend methode.Each time your application calls TrackException, the Snapshot Collector computes a Problem ID from the type of exception being thrown and the throwing method. Telkens wanneer uw toepassing TrackException, roept wordt een item verhoogd voor de juiste probleem-ID.Each time your application calls TrackException, a counter is incremented for the appropriate Problem ID. Wanneer de teller de ThresholdForSnapshotting waarde, de probleem-ID wordt toegevoegd aan een verzameling van plan bent.When the counter reaches the ThresholdForSnapshotting value, the Problem ID is added to a Collection Plan.

De Snapshot Collector bewaakt ook uitzonderingen als ze zijn gegenereerd met een abonnement op de AppDomain.CurrentDomain.FirstChanceException gebeurtenis.The Snapshot Collector also monitors exceptions as they're thrown by subscribing to the AppDomain.CurrentDomain.FirstChanceException event. Wanneer die gebeurtenis wordt geactiveerd, wordt de probleem-ID van de uitzondering berekend en vergeleken met de probleem-id's in de verzameling van plan bent.When that event fires, the Problem ID of the exception is computed and compared against the Problem IDs in the Collection Plan. Als er een overeenkomst is, wordt een momentopname van het actieve proces gemaakt.If there's a match, then a snapshot of the running process is created. De momentopname is een unieke id toegewezen en de uitzondering is een factureringslabel die id.The snapshot is assigned a unique identifier and the exception is stamped with that identifier. Nadat de handler FirstChanceException worden geretourneerd, is de thrown uitzondering wordt verwerkt die normaal werken.After the FirstChanceException handler returns, the thrown exception is processed as normal. De uitzondering bereikt uiteindelijk de methode TrackException opnieuw waar, samen met de id van de momentopname, wordt dit apparaat gerapporteerd naar Application Insights.Eventually, the exception reaches the TrackException method again where it, along with the snapshot identifier, is reported to Application Insights.

De belangrijkste proces wordt voortgezet uit te voeren en verkeer voor gebruikers met weinig onderbreking fungeren.The main process continues to run and serve traffic to users with little interruption. De momentopname wordt ondertussen doorgegeven aan de momentopname Uploader-proces.Meanwhile, the snapshot is handed off to the Snapshot Uploader process. De momentopname van Uploader maakt u een minidump en geüpload naar Application Insights, samen met eventuele relevante (.pdb)-symboolbestanden.The Snapshot Uploader creates a minidump and uploads it to Application Insights along with any relevant symbol (.pdb) files.

Tip

  • Een momentopname van een proces is een onderbroken kloon van het proces dat wordt uitgevoerd.A process snapshot is a suspended clone of the running process.
  • Het maken van de momentopname van het duurt ongeveer 10 tot 20 milliseconden.Creating the snapshot takes about 10 to 20 milliseconds.
  • De standaardwaarde voor ThresholdForSnapshotting is 1.The default value for ThresholdForSnapshotting is 1. Dit is ook de minimale waarde.This is also the minimum value. Daarom uw app heeft voor het activeren van de dezelfde uitzondering tweemaal voordat er een momentopname wordt gemaakt.Therefore, your app has to trigger the same exception twice before a snapshot is created.
  • Stel IsEnabledInDeveloperMode in op true als u genereren van momentopnamen wilt bij foutopsporing in Visual Studio.Set IsEnabledInDeveloperMode to true if you want to generate snapshots while debugging in Visual Studio.
  • De frequentie voor het maken van momentopnamen wordt beperkt door de SnapshotsPerTenMinutesLimit instelling.The snapshot creation rate is limited by the SnapshotsPerTenMinutesLimit setting. Standaard heeft de limiet is een momentopname van elke tien minuten.By default, the limit is one snapshot every ten minutes.
  • Niet meer dan 50 momentopnamen per dag kunnen worden geüpload.No more than 50 snapshots per day may be uploaded.

BeperkingenLimitations

De standaard Bewaar periode voor gegevens is 15 dagen.The default data retention period is 15 days. Voor elke Application Insights-instantie is een maximum aantal moment opnamen van 50 per dag toegestaan.For each Application Insights instance, a maximum number of 50 snapshots is allowed per day.

Symbolen publicerenPublish symbols

De Snapshot Debugger vereist symboolbestanden op de productieserver moet worden gedecodeerd variabelen en om een probleemoplossingservaring in Visual Studio.The Snapshot Debugger requires symbol files on the production server to decode variables and to provide a debugging experience in Visual Studio. Versie 15.2 (of hoger) van Visual Studio 2017 publiceert symbolen voor release standaard bouwt wanneer deze wordt gepubliceerd naar App Service.Version 15.2 (or above) of Visual Studio 2017 publishes symbols for release builds by default when it publishes to App Service. In eerdere versies, moet u de volgende regel toevoegen aan uw publicatieprofiel .pubxml bestand, zodat de symbolen in de releasemodus worden gepubliceerd:In prior versions, you need to add the following line to your publish profile .pubxml file so that symbols are published in release mode:

    <ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>

Voor Azure Compute en andere typen, zorg ervoor dat het symboolbestanden zich in dezelfde map van de hoofdtoepassing dll-bestanden (normaal gesproken wwwroot/bin) of beschikbaar zijn op het huidige pad.For Azure Compute and other types, make sure that the symbol files are in the same folder of the main application .dll (typically, wwwroot/bin) or are available on the current path.

Notitie

Raadpleeg de documentatie van Visual Studiovoor meer informatie over de verschillende beschik bare symbool opties.For more information on the different symbol options that are available consult the Visual Studio documentation. Voor de beste resultaten raden wij u aan ' Full ', ' Portable ' of ' embedded ' te gebruiken.For best results, we recommend using “Full”, “Portable” or “Embedded”.

Geoptimaliseerde buildsOptimized builds

In sommige gevallen kunnen geen lokale variabelen worden weergegeven in de release builds vanwege optimalisaties die worden toegepast door de JIT-compiler.In some cases, local variables can't be viewed in release builds because of optimizations that are applied by the JIT compiler. De Snapshot Collector kan echter in Azure App Services deoptimize activerend methoden die deel van de verzameling van plan bent uitmaken.However, in Azure App Services, the Snapshot Collector can deoptimize throwing methods that are part of its Collection Plan.

Tip

Installeer de Application Insights-Site-extensie in uw App Service deoptimization ondersteuning krijgen.Install the Application Insights Site Extension in your App Service to get deoptimization support.

Volgende stappenNext steps

Application Insights Snapshot Debugger voor uw toepassing inschakelen:Enable Application Insights Snapshot Debugger for your application:

Meer dan Application Insights Snapshot Debugger:Beyond Application Insights Snapshot Debugger: