共用方式為


如何:使用命令列將程式碼剖析工具附加至 ASP.NET Web 應用程式以收集記憶體資料

本主題說明如何使用 Visual Studio 程式碼剖析工具命令列工具將分析工具附加至 ASP.NET Web 應用程式,以及收集 .NET Framework 記憶體配置的數目及大小等資料。您也可以收集有關 .NET Framework 記憶體物件存留期間的資料。

注意事項注意事項

程式碼剖析工具的命令列工具位於 Visual Studio 安裝目錄的 \Team Tools\Performance Tools 子目錄中。在 64 位元電腦上,64 位元和 32 位元版本的工具都可以使用。若要使用分析工具命令列工具,您必須將工具路徑加入至 [命令提示字元] 視窗的 PATH 環境變數,或將它加入至命令本身。如需詳細資訊,請參閱指定程式碼剖析工具命令列工具的路徑

若要從 ASP.NET Web 應用程式收集效能資料,您必須使用 VSPerfCLREnv.cmd工具初始化裝載 ASP.NET Web 應用程式的電腦上以設定適當的環境變數。然後必須重新啟動電腦以設定 Web 伺服器。

接著,您使用 VSPerfCmd.exe 工具,將程式碼剖析工具附加至裝載您網站的 ASP.NET 背景工作處理序。當程式碼剖析工具附加至應用程式時,您可以暫停和繼續資料收集。

若要結束程式碼剖析工作階段,程式碼剖析工具必須不再附加至應用程式,而且程式碼剖析工具必須明確關閉。在許多情況下,我們建議在工作階段結尾清除程式碼剖析環境變數。

附加程式碼剖析工具

若要將程式碼剖析工具附加至 ASP.NET Web 應用程式

  1. 開啟 [命令提示字元] 視窗。

  2. 初始化程式碼剖析環境變數。型別:

    VSPerfClrEnv {/globalsamplegc | /globalsamplegclife} [/samplelineoff]

    • 選項 /globalsamplegc/globalsamplegclife 會指定要收集的記憶體資料之類型。

      只指定下列其中一個選項。

      選項

      描述

      /globalsamplegc

      啟用記憶體配置資料的收集功能。

      /globalsamplegclife

      啟用記憶體配置資料和物件存留期資料的收集功能。

    • 選項 /samplelineoff 會停用將收集的資料指派到特定原始碼程式行。如果已指定這個選項,則只會在函式層級指派資料。

  3. 重新啟動電腦以進行新的環境設定。

  4. 開啟 [命令提示字元] 視窗。視需要設定程式碼剖析工具路徑環境變數。

  5. 啟動程式碼剖析工具。型別:

    VSPerfCmd /start:sample /output**:**OutputFile [Options]

    • /start:sample 選項會初始化此分析工具。

    • **/output:**OutputFile 選項必須搭配 /start 使用。OutputFile 指定程式碼剖析資料 (.vsp) 檔案的名稱和位置。

    下列任何選項都可以搭配 /start:sample 選項使用。

    注意事項注意事項

    ASP.NET 應用程式通常需要 /user/crosssession 選項。

    選項

    描述

    /user:[Domain\]UserName

    指定擁有 ASP.NET 背景工作處理序之帳戶的網域和使用者名稱。如果處理序是以非登入使用者的身分執行,就必須使用這個選項。處理序擁有人列於 [Windows 工作管理員] 的 [處理程序] 索引標籤上的 [使用者名稱] 資料行。

    /crosssession

    對其他登入工作階段中的處理序啟用程式碼剖析。如果 ASP.NET 應用程式在不同的工作階段中執行,就必須有這個選項。工作階段識別項列於 [Windows 工作管理員] 之 [處理程序] 索引標籤上的 [工作階段 ID] 資料行。/CS 可以當做 /crosssession 的縮寫來指定。

    /waitstart [:Interval]

    指定在程式碼剖析工具傳回錯誤之前,等候它初始化的秒數。如果未指定 Interval,程式碼剖析工具會一直等待。根據預設,/start 會立即傳回。

    /wincounter:WinCounterPath

    指定程式碼剖析期間要收集的 Windows 效能計數器。

    /automark:Interval

    僅能與 /wincounter 搭配使用。指定 Windows 效能計數器收集事件之間的毫秒數。預設為 500 毫秒。

    /events:Config

    指定程式碼剖析期間要收集的 Windows 事件追蹤 (ETW) 事件。ETW 事件是在不同的 (.etl) 檔案中收集的。

  6. 以一般方式啟動 ASP.NET Web 應用程式。

  7. 將程式碼剖析工具附加至 ASP.NET 背景工作處理序。型別:

    VSPerfCmd /attach:{PID|ProcName} [/targetclr**:**Version]

    • 處理序 ID (PID) 會指定 ASP.NET 背景工作處理序的處理序 ID 或處理序名稱。您可以在 [Windows 工作管理員] 中檢視所有執行中處理序的處理序 ID。

    • 如果有多個 Common Language Runtime (CLR) 版本載入到應用程式中,則 **/targetclr:**Version 會指定要進行程式碼剖析的 Runtime 版本。

控制資料收集

當目標應用程式正在執行時,您可以使用 VSPerfCmd.exe 選項,啟動及停止將資料寫入程式碼剖析工具資料檔案,以控制資料收集。資料收集控制可讓您收集程式執行中特定組件的資料,例如應用程式的開始與結束。

若要啟動和停止資料收集

  • 下列 VSPerfCmd 選項配對會啟動和停止資料收集。在不同的命令列上指定每個選項。您可以多次開啟或關閉資料收集。

    選項

    描述

    /globalon /globaloff

    啟動 (/globalon) 或停止 (/globaloff) 所有處理序的資料收集。

    /processon:PID/processoff:PID

    啟動 (/processon) 或停止 (/processoff) 對 PID 所指定的處理序進行資料收集。

    /attach:{PID|ProcName} /detach[:{PID|:ProcName}]

    /attach 會開始針對處理序 ID 或處理序名稱指定的處理序收集資料。/detach 會停止對指定的處理序收集資料,如果沒有指定特定的處理序,則停止所有處理序的資料收集。

結束程式碼剖析工作階段

若要結束程式碼剖析工作階段,則程式碼剖析工具必須從 Web 應用程式中斷連結。您可以重新啟動 ASP.NET 背景工作處理序,或是呼叫 VSPerfCmd /detach 選項,藉以停止從使用取樣方法進行程式碼剖析的應用程式中收集資料。然後呼叫 VSPerfCmd /shutdown 選項,關閉分析工具並關閉程式碼剖析資料檔案。VSPerfClrEnv /globaloff 命令會清除程式碼剖析環境變數,但是系統組態在電腦重新啟動後才會重設。

若要結束程式碼剖析工作階段

  1. 請執行下列其中一個步驟,從目標應用程式中斷連結程式碼剖析工具:

    • 輸入 VSPerfCmd /detach

      -或-

    • 關閉 ASP.NET 背景工作處理序。型別:

    IISReset /stop

  2. 關閉程式碼剖析工具。型別:

    VSPerfCmd /shutdown

  3. (選擇項) 清除程式碼剖析環境變數。型別:

    VSPerfCmd /globaloff

  4. 重新啟動電腦。必要時,請重新啟動 Internet Information Services (IIS)。型別:

    IISReset /start

請參閱

概念

ASP.NET Web 應用程式的命令列分析

其他資源

程式碼剖析工具 .NET 記憶體資料檢視