Partager via


Diagnostics dans .NET

Le logiciel ne se comporte pas toujours comme prévu, mais .NET dispose d’outils et d’API qui vous aideront à diagnostiquer ces problèmes rapidement et efficacement.

Le déploiement AOT natif est un modèle d’application disponible depuis .NET 7. Pour plus d’informations sur la prise en charge des diagnostics .NET 8 pour les applications AOT natives, consultez diagnostics AOT natifs.

Cet article vous aide à trouver les différents outils dont vous avez besoin.

Débogueurs

Les débogueurs vous permettent d’interagir avec votre programme. La suspension, l’exécution incrémentielle, l’examen et la reprise vous donnent un aperçu du comportement de votre code. Un débogueur est un bon choix pour diagnostiquer les problèmes fonctionnels qui peuvent être facilement reproduits.

Profileurs

Les profils vous permettent d’analyser les performances de votre programme. Vous pouvez collecter des données sur l’utilisation de la mémoire, l’utilisation du processeur et d’autres métriques pour diagnostiquer et comprendre les problèmes de performances.

Instrumentation pour l’observabilité

.NET prend en charge les techniques d’instrumentation standard de l’industrie à l’aide de métriques, de journaux et de traces distribuées, communément appelées trois piliers de l’observabilité.

L’instrumentation est du code ajouté à un projet logiciel pour enregistrer ce qu’il fait. Ces informations peuvent ensuite être collectées dans des fichiers, des bases de données ou en mémoire et analysées pour comprendre le fonctionnement d’un programme logiciel. Cela est souvent utilisé dans les environnements de production pour surveiller les problèmes et les diagnostiquer. Le runtime .NET a une instrumentation intégrée qui peut être activée et des API qui vous permettent d’ajouter une instrumentation personnalisée spécialisée pour votre application.

Journaux

La journalisation est une technique où le code est instrumenté pour produire un journal, un enregistrement d’événements intéressants qui se sont produits pendant l’exécution du programme. Souvent, un ensemble de bases de référence d’événements de journal est configuré par défaut et une journalisation plus étendue peut être activée à la demande pour diagnostiquer des problèmes particuliers. La surcharge de performances est variable en fonction de la quantité de données journalisées.

Dans la plupart des cas, si vous ajoutez la journalisation à un projet existant ou créez un projet, l’infrastructure ILogger est un bon choix par défaut. ILogger prend en charge la journalisation structurée rapide, la configuration flexible et une collection de récepteurs courants , notamment la console, ce que vous voyez lors de l’exécution d’une application ASP.NET. En outre, l’interface ILogger peut également servir de façade sur de nombreuses implémentations de journalisation tierces qui offrent de riches fonctionnalités et extensibilité.

Metrics

Les métriques sont des mesures numériques enregistrées au fil du temps pour surveiller les performances et l’intégrité des applications. Les métriques sont souvent utilisées pour générer des alertes lorsque des problèmes potentiels sont détectés. Les métriques ont une surcharge de performances très faible et de nombreux services les configurent en tant que données de télémétrie toujours activées. Les exceptions sont souvent enregistrées sous forme de métriques et peuvent être résumées pour réduire la cardinalité des données. Pour plus d’informations, consultez résumé des exceptions.

Traces distribuées

Le suivi distribué est une forme spécialisée de journalisation qui vous permet de localiser les échecs et les problèmes de performances au sein des applications distribuées sur plusieurs ordinateurs ou processus. Cette technique effectue le suivi des requêtes par le biais d’une application en corrélation avec des travaux effectués par différents composants d’application et en la séparant d’autres tâches que l’application peut effectuer pour les requêtes simultanées. Il est possible de suivre chaque requête et échantillonnage peut éventuellement être utilisé pour lier la surcharge de performances.

Collecter l’instrumentation

Il existe plusieurs façons dont les données d’instrumentation peuvent être sortantes de l’application, notamment :

Diagnostics spécialisés

Si le débogage ou l’observabilité n’est pas suffisant, .NET prend en charge des mécanismes de diagnostic supplémentaires tels que EventSource, Dumps, DiagnosticSource. Pour plus d’informations, consultez l’article sur les diagnostics spécialisés .

Outils de diagnostic

.NET prend en charge un certain nombre d’outils CLI qui peuvent être utilisés pour diagnostiquer vos applications.

Didacticiels sur les diagnostics .NET Core

Déboguer une fuite de mémoire

Tutoriel : Déboguer une fuite de mémoire vous guide dans la recherche d’une fuite de mémoire. L’outil dotnet-counters est utilisé pour confirmer la fuite et l’outil dotnet-dump est utilisé pour diagnostiquer la fuite.

Diagnostiquer une utilisation élevée d'un processeur

Tutoriel : Déboguer une utilisation élevée du processeur vous guide tout au long de l’examen de l’utilisation élevée du processeur. Il utilise l’outil dotnet-counters pour confirmer l’utilisation élevée du processeur. Il vous guide ensuite à l’aide de Trace pour l’utilitaire d’analyse des performances (dotnet-trace) ou Linux perf pour collecter et afficher le profil d’utilisation du processeur.

Déboguer un interblocage

Tutoriel : Déboguer un interblocage vous montre comment utiliser l’outil dotnet-dump pour examiner les threads et les verrous.

Déboguer la faim threadPool

Tutoriel : Déboguer la famine de threadPool vous montre comment utiliser les compteurs dotnet et les outils dotnet-stack pour examiner la faim de ThreadPool.

Déboguer un StackOverflow

Tutoriel : Déboguer un StackOverflow montre comment déboguer un StackOverflowException sur Linux.

Déboguer des vidages Linux

Déboguer des vidages Linux explique comment collecter et analyser des vidages sur Linux.

Mesurer les performances à l’aide d’EventCounters

Tutoriel : Mesurer les performances à l’aide d’EventCounters dans .NET vous montre comment utiliser l’API EventCounter pour mesurer les performances dans votre application .NET.

Écrire votre propre outil de diagnostic

La bibliothèque cliente de diagnostics vous permet d’écrire votre propre outil de diagnostic personnalisé le mieux adapté à votre scénario de diagnostic. Pour plus d’informations, consultez la référence de l’API Microsoft.Diagnostics.NETCore.Client.