Инструментирование в Visual Studio (C#, Visual Basic, C++, F#)

В этой статье описываются средства инструментирования в Visual Studio, которые используются для сбора точных счетчиков вызовов и времени вызова.

Существует два типа инструментирования:

  • Статический, который изменяет файлы программы перед запуском (VSInstr)

  • Dynamic, который использует динамический процесс, в котором он не изменяет файлы. Он загружает файлы в память, а затем изменяет их для сбора сведений инструментирования. Используя средство динамического инструментирования, вы получаете более точные сведения, но для меньшей части программы. Вы можете исследовать небольшие разделы кода.

Динамическое инструментирование полезно, так как:

  • Статическое инструментирование нарушает строгое подписывание имен. При динамическом инструментировании эта проблема не возникает, так как инструментирование происходит во время выполнения.

  • При использовании статического инструментирования файлы необходимо развернуть в определенном порядке, и средство может не знать, где находятся файлы. Необходимо вручную запустить VSInstr. С помощью нового инструмента инструментирования вам не нужно искать файлы. В сложной программе поиск всех файлов может быть сложным процессом вручную.

Инструментирование и выборка

Когда дело доходит до профилирования, существует два механизма сбора данных. Коллекция с помощью инструментирования или коллекции с помощью выборки. Подробные сведения см. в разделе "Общие сведения о методах сбора производительности".

Средство динамического инструментирования

Инструментирование. Начиная с Visual Studio 2022 версии 17.5 инструментирование обеспечивает динамическое инструментирование для .NET Core, .NET 5 и платформа .NET Framework. Это средство обеспечивает лучшую производительность для сценариев инструментирования. Доступ к этому инструменту с помощью профилировщика производительности (ALT +F2). Дополнительные сведения см. в разделе Инструментирование приложения.

Начиная с Visual Studio 2022 версии 17.6 средство инструментирования также поддерживает C/C++, но использует статическое инструментирование (VSInstr).

Сведения об использовании этого средства из командной строки см. в разделе "Профилирование приложений" из командной строки.

Инструментирование. Начиная с Visual Studio 2019 версии 16.9 инструментирование обеспечивает динамическое инструментирование для .NET Core, .NET 5+ и платформа .NET Framework (не C/C++). Это средство использует версию VSInstr.exe, которая поддерживает динамическое инструментирование. Доступ к этому инструменту с помощью профилировщика производительности (ALT +F2). Для библиотек DLL вместо этого необходимо использовать средство командной строки (VSInstr).

Средство статического инструментирования

VSInstr — начиная с Visual Studio 2022 версии 17.6 (предварительная версия 2), средство инструментирования использует поддержку VSInstr для C/C++. VSInstr также используется для сценариев командной строки и работает для приложений платформа .NET Framework и C/C++. Дополнительные сведения см. в статье Сбор подробных данных о времени для автономного приложения с помощью командной строки профилировщика.