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 van uw meest voorkomende 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

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 Snapshot Debugger wordt geïmplementeerd als een Application Insights-telemetrieprocessor. Wanneer uw toepassing wordt uitgevoerd, wordt de Snapshot Debugger-telemetrieprocessor toegevoegd aan de door het systeem gegenereerde logpipeline 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 een TrackException.

  2. De Snapshot Debugger bewaakt uitzonderingen wanneer deze worden gegenereerd door zich te abonneren op de AppDomain.CurrentDomain.FirstChanceException gebeurtenis.

  3. Een teller wordt verhoogd voor het 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 gegooide uitzondering zoals gebruikelijk verwerkt.

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

Notitie

Stel IsEnabledInDeveloperMode in op true als u momentopnamen wilt genereren terwijl u debugt in Visual Studio.

Momentopname-uploaderproces

Hoewel het Snapshot Debugger-proces nog steeds draait en verkeer met weinig onderbreking aan gebruikers levert, wordt de momentopname overgedragen aan het proces van de momentopname-uploader. In een typisch scenario: 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 wordt automatisch bijgewerkt via de ingebouwde, vooraf geïnstalleerde site-extensie van Application Insights.

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

administratieve kosten

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 versies

    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.

    Aanbeveling

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

Volgende stappen

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