Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsqu’il est activé, le Débogueur d'instantané collecte automatiquement un instantané de débogage des variables de votre code source lorsqu’une exception se déclenche dans votre application .NET active. Le Débogueur de capture instantanée dans Application Insights :
- Surveille les logs du système générés par votre application web.
- Collecte les captures instantanées sur vos principales levées d’exception.
- Fournit les informations dont vous avez besoin pour diagnostiquer les problèmes en production.
En savoir plus sur les processus Snapshot Debugger et Snapshot Uploader.
Applications et environnements pris en charge
Applications logicielles
La collecte de captures instantanées est disponible pour :
- .NET Framework 4.6.2 et versions ultérieures.
- .NET 6.0 ou version ultérieure sur Windows.
Environnements
Les environnements suivants sont pris en charge :
- Azure App Service
- Azure Functions
- Azure Cloud Services exécutant la famille de système d’exploitation 4 ou ultérieure
- Azure Service Fabric s’exécutant sur Windows Server 2012 R2 ou version ultérieure
- Azure Virtual Machines et Azure Virtual Machine Scale Sets exécutant Windows Server 2012 R2 ou version ultérieure
- Machines virtuelles ou physiques locales exécutant Windows Server 2012 R2 ou version ultérieure ou Windows 8.1 ou ultérieure
Remarque
Les applications clientes (par exemple, WPF, Windows Forms ou UWP) ne sont pas prises en charge.
Conditions préalables à l’utilisation du débogueur de capture instantanée
Packages et configurations
- Ajoutez le package NuGet Snapshot Collector dans votre application.
- Configurer des paramètres de collecte dans
ApplicationInsights.config.
Autorisations
- Vérifiez que vous êtes ajouté au rôle Application Insights Snapshot Debugger pour le Application Insights Snapshot cible.
Fonctionnement du Débogueur de capture instantanée
Le Débogueur de capture instantanée est implémenté comme Processeur de données de télémétrie Application Insights. Quand votre application s’exécute, le processeur de données de télémétrie du Débogueur de capture instantanée est ajouté au pipeline de journaux générés par le système de votre application.
Important
Les instantanés peuvent contenir des données personnelles ou d’autres informations sensibles dans les valeurs des variables et des paramètres. Les données des instantanés sont stockées dans la même région que votre ressource Application Insights.
Processus de débogueur de capture instantanée
Le processus de débogueur de capture instantanée démarre et se termine par la méthode TrackException. Une capture instantanée de processus est un clone suspendu du processus en cours d’exécution, de sorte que vos utilisateurs n’ont pas d’interruption. Dans un scénario classique :
Votre application jette le
TrackException.Le débogueur de capture instantanée surveille les exceptions à mesure qu’elles sont levées en s’abonnant à l’événement
AppDomain.CurrentDomain.FirstChanceException.Un compteur est incrémenté pour l’ID de problème.
- Lorsque le compteur atteint la valeur
ThresholdForSnapshotting, l’ID de problème est ajouté à un plan de collecte.
Remarque
La valeur minimale
ThresholdForSnapshottingpar défaut est 1. Avec cette valeur, votre application doit déclencher la même exception à deux reprises avant qu’une capture instantanée soit créée.- Lorsque le compteur atteint la valeur
L’identifiant du problème de l’événement d’exception est calculé et comparé aux identifiants du problème dans le plan de collecte.
S’il existe une correspondance entre les ID de problèmes, une capture instantanée du processus en cours d’exécution est créée.
- Un identificateur unique est attribué à l’instantané et l’exception est marquée avec cet identificateur.
Remarque
Le taux de création de capture instantanée est limité par le paramètre
SnapshotsPerTenMinutesLimit. Par défaut, la limite est d’une capture instantanée toutes les 10 minutes.Une fois que le gestionnaire
FirstChanceExceptiona retourné l’exception levée, celle-ci est traitée normalement.L’exception atteint à nouveau la méthode
TrackExceptionet est signalée à Application Insights, avec l’identifiant de la capture instantanée.
Remarque
Définissez IsEnabledInDeveloperMode sur true si vous souhaitez générer des instantanés pendant le débogage dans Visual Studio.
Processus du chargeur de capture instantanée
Bien que le processus de débogueur de capture instantanée continue à s’exécuter et à traiter le trafic vers les utilisateurs avec peu d’interruption, la capture instantanée est remise au processus du chargeur de captures instantanées. Dans un scénario classique, le chargeur de capture instantanée :
Crée un minidump.
Charge le minidump dans Application Insights, ainsi que tous les fichiers de symboles (.pdb) pertinents.
Remarque
Au maximum 50 captures instantanées peuvent être chargées par jour.
Si vous avez activé le Débogueur de capture instantanée et que vous ne voyez pas d’instantanés, consultez le Guide de résolution des problèmes.
Mise à niveau du Débogueur de capture instantanée
Le Débogueur de capture instantanée s’auto-met à niveau via l’extension de site Application Insights intégrée et préinstallée.
L’ajout manuel d’une extension de site Application Insights pour garder à jour le Débogueur de capture instantanée est une méthode dépréciée.
Traitement
Le débogueur de capture instantanée (Snapshot Debugger) est conçu pour être utilisé dans des environnements de production. Les paramètres par défaut incluent des limites de débit afin de minimiser l’impact sur vos applications.
Toutefois, il est possible que le Débogueur de captures instantanées entraîne une légère surcharge du processeur, de la mémoire et des entrées/sorties, par exemple :
- Lorsqu’une exception est levée dans votre application
- Si le gestionnaire d’exception décide de créer une capture instantanée
- Lorsque
TrackExceptionest appelé
Le stockage des données capturées par le Debugger de captures instantanées n’entraîne aucun coût supplémentaire.
Optimisations du code
Si des instantanés sont collectés à partir de votre application, il peut y avoir des informations sur les exceptions dans l'aperçu consolidé des optimisations du code.
Limites
Cette section décrit les limitations du Débogueur de capture instantanée.
Conservation des données
Les captures instantanées de débogage sont stockées pendant 15 jours. La stratégie de conservation des données par défaut est définie par application. Si vous avez besoin d’augmenter cette valeur, vous pouvez demander une augmentation en ouvrant un cas de support dans le Azure portal. Pour chaque instance Application Insights, un nombre maximal de 50 instantanés est autorisé par jour.
Publiez des symboles
Le Débogueur de capture instantanée nécessite des fichiers de symboles sur le serveur de production pour :
- Décoder des variables
- Fournir une expérience de débogage dans Visual Studio
Par défaut, Visual Studio 2017 à partir de la version 15.2 publie des symboles pour les builds de version lorsqu'il publie sur App Service.
Dans les versions antérieures, vous devez ajouter la ligne suivante à votre fichier de profil de publication
.pubxmlafin que les symboles soient publiés en mode Mise en production :<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>Pour Azure Compute et d'autres services, assurez-vous que les fichiers de symboles sont soit :
- Dans le même dossier de l’application principale
.dll(généralementwwwroot/bin), ou - Disponible sur le chemin d’accès actuel.
Pour plus d’informations sur les différentes options de symbole disponibles, consultez la documentation Visual Studio. Pour optimiser les résultats, nous vous recommandons d’utiliser les options « Full », « Portable » ou « Embedded ».
Builds optimisées
Dans certains cas, des variables locales sont invisibles dans les builds de mise en production en raison d’optimisations appliquées par le compilateur JIT.
Toutefois, dans App Service, le débogueur de capture instantanée peut déoptimiser les méthodes d'exception incluses dans son plan de collecte.
Conseil
Installez l’extension de site Application Insights dans votre instance de App Service pour obtenir la prise en charge de la déoptimisation.
Étapes suivantes
Activez le Débogueur de capture instantanée Application Insights pour votre application :