在 Visual Studio(C#、Visual Basic、C++、F#)中进行检测

本文介绍 Visual Studio 中的检测工具,这些工具用于收集确切的调用计数和调用时间。

有两种类型的检测:

  • 静态,可在运行程序之前修改程序的文件 (VSInstr)

  • 动态,使用不在其中更改文件的动态进程。 它将文件加载到内存中,然后对其进行修改以收集检测信息。 使用动态检测工具可以获得更准确的信息,但只能获取程序的一小部分信息。 可以研究一小段代码。

动态检测非常有用,原因如下:

  • 静态检测会中断强名称签名。 使用动态检测可以避免此问题,因为检测在运行时执行。

  • 使用静态检测时,需要按特定顺序部署文件,并且该工具可能不知道文件位置。 需要手动运行 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++ 应用。 有关详细信息,请参阅使用探查器命令行收集独立应用程序的详细计时数据