Delen via


Fouten opsporen in .NET-toepassingen met behulp van snapshot debugger

Wanneer deze functie is ingeschakeld, verzamelt Snapshot Debugger automatisch een momentopname van foutopsporing van de broncode en variabelen wanneer er een uitzondering optreedt in uw live .NET-toepassing. Het foutopsporingsprogramma voor momentopnamen in Application Insights:

  • Bewaakt door het systeem gegenereerde logboeken van uw web-app.
  • Verzamelt momentopnamen op uw meestvoorwerpende uitzonderingen.
  • Bevat informatie die u nodig hebt om problemen in productie vast te stellen.

Meer informatie over de processen snapshot debugger en Snapshot Uploader.

Ondersteunde toepassingen en omgevingen

In deze sectie worden de toepassingen en omgevingen vermeld die worden ondersteund.

Toepassingen

Verzameling momentopnamen is beschikbaar voor:

Omgevingen

De volgende omgevingen worden ondersteund:

Notitie

Clienttoepassingen (bijvoorbeeld WPF, Windows Forms of UWP) worden niet ondersteund.

Vereisten voor het gebruik van het foutopsporingsprogramma voor momentopnamen

Pakketten en configuraties

Machtigingen

Hoe Snapshot Debugger werkt

Het foutopsporingsprogramma voor momentopnamen wordt geïmplementeerd als een Application Insights-telemetrieprocessor. Wanneer uw toepassing wordt uitgevoerd, wordt de telemetrieprocessor snapshot debugger toegevoegd aan de door het systeem gegenereerde logboekpijplijn van uw toepassing.

Belangrijk

Momentopnamen kunnen persoonlijke gegevens of andere gevoelige informatie bevatten in variabelen en parameterwaarden. Momentopnamegegevens worden opgeslagen in dezelfde regio als uw Application Insights-resource.

Proces voor foutopsporingsprogramma voor momentopnamen

Het proces snapshot debugger wordt gestart en eindigt met de TrackException methode. Een momentopname van een proces is een onderbroken kloon van het actieve proces, zodat uw gebruikers weinig tot geen onderbreking ervaren. In een typisch scenario:

  1. Uw toepassing gooit de TrackException.

  2. Het foutopsporingsprogramma voor momentopname bewaakt uitzonderingen wanneer deze worden gegenereerd door u te abonneren op de AppDomain.CurrentDomain.FirstChanceException gebeurtenis.

  3. Een teller wordt verhoogd voor de probleem-id.

    • Wanneer de teller de ThresholdForSnapshotting waarde bereikt, wordt de probleem-id toegevoegd aan een verzamelingsplan.

    Notitie

    De ThresholdForSnapshotting standaard minimumwaarde is 1. Met deze waarde moet uw app dezelfde uitzondering twee keer activeren voordat een momentopname wordt gemaakt.

  4. De probleem-id van de uitzonderingsgebeurtenis wordt berekend en vergeleken met de probleem-id's in het verzamelingsplan.

  5. Als er een overeenkomst is tussen probleem-id's, wordt er een momentopname van het actieve proces gemaakt.

    • Aan de momentopname wordt een unieke id toegewezen en de uitzondering wordt gestempeld met die id.

    Notitie

    De snelheid voor het maken van momentopnamen wordt beperkt door de SnapshotsPerTenMinutesLimit instelling. Standaard is de limiet elke 10 minuten één momentopname.

  6. Nadat de FirstChanceException handler is geretourneerd, wordt de gegenereerde uitzondering als normaal verwerkt.

  7. De uitzondering bereikt de TrackException methode opnieuw en wordt gerapporteerd aan Application Insights, samen met de momentopname-id.

Notitie

Stel IsEnabledInDeveloperMode deze true optie in als u momentopnamen wilt genereren terwijl u fouten opssport in Visual Studio.

Proces momentopname-uploader

Hoewel het proces voor het foutopsporingsprogramma voor momentopnamen nog steeds wordt uitgevoerd en verkeer blijft leveren aan gebruikers met een kleine onderbreking, wordt de momentopname overgedragen aan het proces momentopname-uploader. In een typisch scenario is de momentopname-uploader:

  1. Hiermee maakt u een minidump.

  2. Uploadt de minidump naar Application Insights, samen met alle relevante symboolbestanden (.pdb).

Notitie

Er kunnen maximaal 50 momentopnamen per dag worden geüpload.

Als u het foutopsporingsprogramma voor momentopnamen hebt ingeschakeld, maar geen momentopnamen ziet, raadpleegt u de gids voor probleemoplossing.

Foutopsporingsprogramma voor momentopnamen upgraden

Snapshot Debugger auto-upgrades via de ingebouwde, vooraf geïnstalleerde Application Insights-site-extensie.

Handmatig een Application Insights-site-extensie toevoegen om snapshot Debugger up-to-date te houden, wordt afgeschaft.

Overhead

Het snapshot debugger is ontworpen voor gebruik in productieomgevingen. De standaardinstellingen omvatten frequentielimieten om de impact op uw toepassingen te minimaliseren.

U kunt echter te maken hebben met kleine CPU-, geheugen- en I/O-overhead die is gekoppeld aan het foutopsporingsprogramma voor momentopnamen, zoals:

  • Wanneer er een uitzondering wordt gegenereerd in uw toepassing
  • Als de uitzonderingshandler besluit een momentopname te maken
  • Wanneer TrackException wordt aangeroepen

Er zijn geen extra kosten verbonden aan het opslaan van gegevens die zijn vastgelegd door snapshot debugger.

Bekijk voorbeeldscenario's waarin u overhead van snapshot debugger kunt ervaren.

Beperkingen

In deze sectie worden beperkingen beschreven voor het foutopsporingsprogramma voor momentopnamen.

  • Gegevensretentie

    Momentopnamen voor foutopsporing worden gedurende 15 dagen opgeslagen. Het standaardbeleid voor gegevensretentie wordt per toepassing ingesteld. Als u deze waarde wilt verhogen, kunt u een verhoging aanvragen door een ondersteuningsaanvraag te openen in Azure Portal. Voor elk Application Insights-exemplaar zijn maximaal 50 momentopnamen per dag toegestaan.

  • Symbolen publiceren

    Voor het foutopsporingsprogramma voor momentopnamen zijn symboolbestanden op de productieserver vereist om:

    • Variabelen decoderen
    • Een foutopsporingservaring bieden in Visual Studio

    Visual Studio 2017 versie 15.2+ publiceert standaard symbolen voor release-builds wanneer deze naar App Service wordt gepubliceerd.

    In eerdere versies moet u de volgende regel toevoegen aan het publicatieprofielbestand .pubxml , zodat symbolen worden gepubliceerd in de releasemodus:

         <ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
    

    Voor Azure Compute en andere typen moet u ervoor zorgen dat de symboolbestanden zijn:

    • In dezelfde map van de hoofdtoepassing .dll (meestal) wwwroot/binof
    • Beschikbaar op het huidige pad.

    Zie de Visual Studio-documentatie voor meer informatie over de verschillende beschikbare symboolopties. Voor de beste resultaten raden we u aan Full, Portable of Embedded te gebruiken.

  • Geoptimaliseerde builds

    In sommige gevallen kunnen lokale variabelen niet worden weergegeven in releaseversies vanwege optimalisaties die door de JIT-compiler worden toegepast.

    In App Service kan het foutopsporingsprogramma voor momentopnamen echter deoptimaliseringsmethoden die deel uitmaken van het verzamelingsplan, deoptimiseren.

    Tip

    Installeer de Application Insights-site-extensie in uw exemplaar van App Service om ondersteuning voor optimalisatie te krijgen.

Volgende stappen

Schakel het foutopsporingsprogramma van Application Insights Snapshot in voor uw toepassing: