共用方式為


從命令行測量應用程式效能

您可以使用命令列工具來收集應用程式的相關效能資訊。 您可以收集 CPU 使用量、.NET 記憶體配置、檢測和資料庫查詢的效能資料。

在本文中所述的範例中,您會收集Microsoft記事本的效能資訊,但相同的方法可用來分析任何進程。

注意

若要從命令行生成已檢測的 C/C++ 元件,請在遵循本文中的步驟之前,先參閱 檢測原生獨立元件。 針對 CPU 使用量數據,您可以使用本文所述的程式。

先決條件

  • Visual Studio 2019 或更新版本

  • 熟悉命令行工具

  • 若要在未安裝 Visual Studio 的遠端電腦上收集效能資訊,請在遠端電腦上安裝 Remote Tools for Visual Studio。 工具的版本必須符合您的 Visual Studio 版本。

大部分的集合代理程式都支援 .NET Core、.NET 5+、.NET Framework 和 C++。 不過,支援僅限於對應效能工具所提供的支援。 例如,資料庫 集合代理程式僅限於 .NET Core 和 .NET 5+。

收集效能數據

使用 Visual Studio 診斷 CLI 工具進行分析的運作方式是將分析工具以及其中一個收集器代理程式附加到程序。 當您連接分析工具時,會開始一個診斷會話來擷取並儲存剖析資料,直到工具停止,此時數據會匯出至 .diagsession 檔案。 然後,您可以在 Visual Studio 中開啟此檔案來分析結果。

  1. 啟動 [記事本],然後開啟 [任務管理器] 以取得其進程標識碼 (PID)。 在 [任務管理器] 中,尋找 [詳細數據] 索引標籤中的 PID

  2. 開啟命令提示字元,並切換到包含集合代理程式可執行檔的目錄,通常位於這裡(適用於 Visual Studio Enterprise)。

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\

    針對遠端工具,集合代理程式可執行檔位於此位置:

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\

    注意

    在遠端案例中使用命令列時,您必須在遠端電腦上執行命令行指示。 如果您想要從 Visual Studio 連結至遠端電腦,請改用 Visual Studio 中的效能分析工具。

  3. 輸入下列命令以開始 VSDiagnostics.exe

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    必須包含的參數如下:

    • < 識別碼> 識別集合會話。 標識碼必須是介於 1-255 之間的數位。
    • < pid>,您想要分析之程式的 PID,在此案例中,您在步驟 1 中找到的 PID。
    • < configFile>,您要啟動之收集代理程式的組態檔。 如需詳細資訊,請參閱 代理程式的組態檔

    例如,您可以使用下列命令作為 CPUUsageBase 代理程式,方法是取代 pid,如先前所述。

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    或者,您可以使用 launch 命令來啟動可執行檔。 在此情境中,您不需要取得程序 ID 並連接到它。 所有工具都支援 launch 命令,但有些工具不支援 attach,例如檢測和 .NET 配置工具。 例如,使用下列項目來啟動可執行檔並收集檢測數據:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. 調整記事本的大小,或在其中輸入一些內容,以確保收集到一些有趣的分析資訊。

  5. 輸入下列命令,以停止收集會話並將輸出傳送至檔案。

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. 找出上一個命令的 .diagsession 檔案輸出,並在Visual Studio中開啟它(檔案>開啟),以檢查收集到的資訊。

    若要分析結果,請參閱對應效能工具的檔。 例如,這可能是 CPU 使用量.NET 物件配置工具InstrumentationDatabase 工具。

代理程式組態檔

集合代理程式是可交換的元件,會根據您嘗試測量的數據來收集不同類型的數據。

為了方便起見,我們建議您將該資訊儲存在代理程式組態檔中。 組態檔是 .json 檔案,至少包含 .dll 及其 COM CLSID 的名稱。 根據預設,您可以在下列資料夾中找到範例組態檔:

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

CpuUsage 設定(基底/高/低)對應於 CPU 使用量剖析工具 所收集的數據。 DotNetObjectAlloc 組態 (Base/Low) 對應於 .NET 物件配置工具所收集的數據。

基底/低/高組態是指取樣率。 例如,Low 是 100 個樣本/秒,而 High 是 4000 個樣本/秒。

若要讓 VSDiagnostics.exe 工具與集合代理程式搭配使用,它需要適當代理程式的 DLL 和 COM CLSID。 代理程式也可能有其他組態選項,這會是組態檔中指定的任何選項,格式為正確逸出 JSON。

權限

若要分析需要提高許可權的應用程式,您必須從提升許可權的命令提示字元執行此動作。