Instrumentation dans Visual Studio (C#, Visual Basic, C++, F#)

Cet article décrit les outils d’instrumentation dans Visual Studio, qui sont utilisés pour collecter le nombre exact d’appels et les heures des appels.

Il existe deux types d’instrumentation :

  • Statique, qui modifie les fichiers du programme avant son exécution (VSInstr)

  • Dynamique, qui utilise un processus dynamique dans lequel il ne modifie pas les fichiers. Il charge les fichiers en mémoire, puis les modifie pour collecter les informations d’instrumentation. L’outil d’instrumentation dynamique vous permet d’obtenir des informations plus précises, mais pour une plus petite partie du programme. Vous pouvez examiner de petites sections de code.

L’instrumentation dynamique est utile pour les raisons suivantes :

  • L’instrumentation statique interrompt la signature des noms partagés. Avec l’instrumentation dynamique, ce problème est évité, car l’instrumentation se produit au moment de l’exécution.

  • Avec l’instrumentation statique, les fichiers doivent être déployés dans un ordre spécifique et l’outil peut ne pas savoir où se trouvent les fichiers. Vous devez exécuter manuellement VSInstr. Avec le nouvel outil d’instrumentation, vous n’avez pas besoin d’aller rechercher les fichiers. Dans un programme complexe, la recherche de tous les fichiers peut être un processus manuel difficile.

Instrumentation ou échantillonnage

En matière de profilage, il existe deux mécanismes de collecte de données. La collecte à l’aide de l’instrumentation et la collecte à l’aide de l’échantillonnage. Pour plus d’informations, consultez Fonctionnement des méthodes de collecte des données de performance.

Outil d’instrumentation dynamique

Instrumentation : à compter de Visual Studio 2022 version 17.5, l’outil d’instrumentation fournit une instrumentation dynamique pour .NET Core, .NET 5+ et .NET Framework. Cet outil offre les meilleures performances pour les scénarios d’instrumentation. Accédez à cet outil à l’aide du Profileur de performances (Alt + F2). Pour plus d’informations, consultez Instrumenter votre application.

À compter de Visual Studio 2022 version 17.6, l’outil Instrumentation prend également en charge C/C++, mais utilise l’instrumentation statique (VSInstr).

Pour utiliser cet outil à partir de la ligne de commande, consultez Profilage d’applications à partir de la ligne de commande.

Instrumentation : à compter de Visual Studio 2019 version 16.9, l’outil d’instrumentation fournit une instrumentation dynamique pour .NET Core, .NET 5+ et .NET Framework (et non C/C++). Cet outil utilise une version de VSInstr.exe qui prend en charge l’instrumentation dynamique. Accédez à cet outil à l’aide du Profileur de performances (Alt + F2). Pour les DLL, vous devez utiliser l’outil en ligne de commande (VSInstr) à la place.

Outil d’instrumentation statique

VSInstr : à compter de Visual Studio 2022 version 17.6 Preview 2, l’outil d’instrumentation utilise VSInstr pour la prise en charge de C/C++. VSInstr est également utilisé dans les scénarios de ligne de commande et fonctionne pour les applications .NET Framework et C/C++. Pour plus d’informations, consultez Collecter des données de temporisation détaillées pour une application autonome en utilisant la ligne de commande du profileur.