Instrumentacja w programie Visual Studio (C#, Visual Basic, C++, F#)

W tym artykule opisano narzędzia instrumentacji w programie Visual Studio, które są używane do zbierania dokładnych liczb wywołań i czasów wywołań.

Istnieją dwa typy instrumentacji:

  • Statyczny, który modyfikuje pliki programu przed jego uruchomieniem (VSInstr)

  • Dynamiczny, który używa procesu dynamicznego, w którym nie zmienia plików. Ładuje pliki do pamięci, a następnie modyfikuje je w celu zbierania informacji instrumentacji. Korzystając z narzędzia instrumentacji dynamicznej, można uzyskać dokładniejsze informacje, ale dla mniejszej części programu. Możesz zbadać małe sekcje kodu.

Instrumentacja dynamiczna jest przydatna, ponieważ:

  • Instrumentacja statyczna przerywa podpisywanie silnych nazw. W przypadku instrumentacji dynamicznej ten problem jest unikany, ponieważ instrumentacja występuje w czasie wykonywania.

  • W przypadku instrumentacji statycznej pliki muszą być wdrażane w określonej kolejności, a narzędzie może nie wiedzieć, gdzie znajdują się pliki. Należy ręcznie uruchomić program VSInstr. Przy użyciu nowego narzędzia instrumentacji nie trzeba wyszukiwać plików. W skomplikowanym programie znalezienie wszystkich plików może być trudnym, ręcznym procesem.

Instrumentacja a próbkowanie

Jeśli chodzi o profilowanie, istnieją dwa mechanizmy zbierania danych. Zbieranie przy użyciu instrumentacji lub kolekcji przy użyciu próbkowania. Aby uzyskać szczegółowe informacje, zobacz Understanding performance collection methods (Opis metod zbierania wydajności).

Narzędzie instrumentacji dynamicznej

Instrumentacja — począwszy od programu Visual Studio 2022 w wersji 17.5 narzędzie instrumentacji zapewnia dynamiczne instrumentację dla platformy .NET Core, .NET 5 i .NET Framework. To narzędzie zapewnia najlepszą wydajność w scenariuszach instrumentacji. Uzyskaj dostęp do tego narzędzia przy użyciu profilera wydajności (Alt + F2). Aby uzyskać więcej informacji, zobacz Instrumentacja aplikacji.

Począwszy od programu Visual Studio 2022 w wersji 17.6, narzędzie instrumentacji obsługuje również język C/C++, ale używa instrumentacji statycznej (VSInstr).

Aby użyć tego narzędzia z poziomu wiersza polecenia, zobacz Profilowanie aplikacji z wiersza polecenia.

Instrumentacja — począwszy od programu Visual Studio 2019 w wersji 16.9 narzędzie instrumentacji zapewnia instrumentację dynamiczną dla platform .NET Core, .NET 5 i .NET Framework (nie C/C++). To narzędzie używa wersji VSInstr.exe, która obsługuje instrumentację dynamiczną. Uzyskaj dostęp do tego narzędzia przy użyciu profilera wydajności (Alt + F2). W przypadku bibliotek DLL należy zamiast tego użyć narzędzia wiersza polecenia (VSInstr).

Narzędzie instrumentacji statycznej

VSInstr — począwszy od programu Visual Studio 2022 w wersji 17.6 (wersja zapoznawcza 2), narzędzie instrumentacji używa narzędzia VSInstr do obsługi języka C/C++. Program VSInstr jest również używany w scenariuszach wiersza polecenia i działa w przypadku aplikacji .NET Framework i C/C++. Aby uzyskać więcej informacji, zobacz Zbieranie szczegółowych danych o chronometrażu dla aplikacji autonomicznej przy użyciu wiersza polecenia profilera.