使用探查器命令行检测独立 .NET Framework 组件,并收集计时数据

本主题介绍如何使用 Visual Studio 命令行分析工具检测 .NET Framework 组件(比如 .exe 或 .dll 文件)并收集详细的计时数据。

注意

对于 .NET Core 和 .NET 5+,请参阅命令行检测方案的通过命令行度量应用程序性能。 .NET Core 和 .NET 5+ 二进制文件不支持 VSInstr。 从 Visual Studio 2022 版本 17.6 开始,我们建议也对 .NET Framework 方案使用 VSDiagnostics.exe,因为它提供了动态检测。

若要使用检测方法收集 .NET Framework 的详细计时数据,可使用 VSInstr.exe 工具生成该组件的受检测版本,并使用 VSPerfCLREnv.cmd 工具初始化分析环境变量。 然后启动探查器。

分析工具的路径是 Microsoft Visual Studio\version\Enterprise\Team Tools\DiagnosticsHub\Collector

注意

若要使用探查器命令行工具,必须将工具路径添加到命令提示符窗口的 PATH 环境变量中,或将其添加到命令本身。

在执行受检测组件时,会自动将计时数据收集到数据文件中。 在分析会话过程中可以暂停和恢复数据收集。

若要结束分析会话,请关闭目标应用程序,然后显式关闭探查器。 在大多数情况下,建议在会话结束时清除分析环境变量。

启动分析会话

使用检测方法启动分析:

  1. 打开一个命令提示符窗口。 如有必要,将探查器工具目录添加到 PATH 环境变量。 安装时不添加路径。

  2. 使用 VSInstr 工具生成目标应用程序的受检测版本。

  3. 初始化 .NET Framework 分析环境变量。 类型:

    VSPerfClrEnv /traceon

  4. 启动探查器。 类型:

    VSPerfCmd /start:trace /output:OutputFile [Options]

    • /start:trace 选项初始化探查器。

    • /output:OutputFile 选项需要与 /start 一起使用。 OutputFile 指定分析数据 (.vsp) 文件的名称和位置。

      可以将以下任一选项与 /start:trace 选项一起使用。

    选项 说明
    /user:[Domain\]UserName 指定拥有所分析进程的帐户的域和用户名。 仅当运行进程的用户不是已登录用户时,才需要此选项。 进程所有者在 Windows 任务管理器的“进程”选项卡上的“用户名”列中列出 。
    /crosssession 启用其他会话中的进程分析。 如果 ASP.NET 应用程序在其他会话中运行,则需要此选项。 会话标识符位于 Windows 任务管理器的“进程”选项卡上的“会话 ID”列中 。 可以将 /CS 指定为 /crosssession 的缩写。
    /globaloff 在暂停数据收集的情况下启动探查器。 使用 /globalon 可恢复分析。
    /counter:Config Config 中所指定的处理器性能计数器收集信息。 计数器信息将添加到在每个分析事件中收集的数据中。
    /wincounter:WinCounterPath 指定要在分析期间收集的 Windows 性能计数器。
    /automark:Interval 仅与 /wincounter 一起使用。 指定两次 Windows 性能计数器收集事件相隔的毫秒数。 默认值为 500 毫秒。
    /events:Config 指定要在分析期间收集的 Windows 事件跟踪 (ETW) 事件。 ETW 事件收集在单独的 (.etl) 文件中。
  5. 从命令提示符窗口中启动目标应用程序。

控制数据收集

在目标应用程序运行时,可以通过使用 VSPerfCmd.exe 选项开始和停止向探查器数据文件写入数据,从而控制数据收集。 通过控制数据收集,可以针对程序执行的特定部分(如启动或关闭应用程序)进行数据收集。

启动和停止数据收集:

  • 以下选项对可启动和停止数据收集。 在单独的命令行上指定每个选项。 可多次打开和关闭数据收集。

    选项 描述
    /globalon /globaloff 启动 ( /globalon) 或停止 ( /globaloff) 所有进程的数据收集。
    /processon:PID/processoff:PID 启动 ( /processon) 或停止 ( /processoff) 由进程 ID (PID) 指定的进程的数据收集。
    /threadon:TID/threadoff:TID 启动 ( /threadon) 或停止 ( /threadoff) 由线程 ID (TID) 指定的线程的数据收集。

结束分析会话

若要结束分析会话,关闭正在运行受检测组件的应用程序。 调用 VSPerfCmd/shutdown 选项关闭探查器和分析数据文件。 VSPerfClrEnv /off 命令会清除分析环境变量。

结束分析会话:

  1. 关闭目标应用程序。

  2. 关闭探查器。 类型:

    VSPerfCmd /shutdown

  3. (可选)清除分析环境变量。 类型:

    VSPerfClrEnv /off