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:
- .NET Framework 4.6.2 en nieuwere versies.
- .NET 6.0 of hoger in Windows.
Omgevingen
De volgende omgevingen worden ondersteund:
- Azure App Service
- Azure Functions
- Azure Cloud Services met besturingssysteemfamilie 4 of hoger
- Azure Service Fabric uitgevoerd op Windows Server 2012 R2 of hoger
- Virtuele Azure-machines en Virtuele-machineschaalsets met Windows Server 2012 R2 of hoger
- On-premises virtuele of fysieke machines met Windows Server 2012 R2 of hoger of Windows 8.1 of hoger
Notitie
Clienttoepassingen (bijvoorbeeld WPF, Windows Forms of UWP) worden niet ondersteund.
Vereisten voor het gebruik van het foutopsporingsprogramma voor momentopnamen
Pakketten en configuraties
- Neem het NuGet-pakket Snapshot Collector op in uw toepassing.
- Verzamelingsparameters configureren in
ApplicationInsights.config
.
Machtigingen
- Controleer of u bent toegevoegd aan de rol Application Insights Snapshot Debugger voor de doel Application Insights Snapshot.
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:
Uw toepassing gooit de
TrackException
.Het foutopsporingsprogramma voor momentopname bewaakt uitzonderingen wanneer deze worden gegenereerd door u te abonneren op de
AppDomain.CurrentDomain.FirstChanceException
gebeurtenis.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.- Wanneer de teller de
De probleem-id van de uitzonderingsgebeurtenis wordt berekend en vergeleken met de probleem-id's in het verzamelingsplan.
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.Nadat de
FirstChanceException
handler is geretourneerd, wordt de gegenereerde uitzondering als normaal verwerkt.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:
Hiermee maakt u een minidump.
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/bin
of - 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: