共用方式為


HOW TO:使用程式碼剖析工具命令列檢測靜態編譯的 ASP.NET Web 應用程式並收集記憶體資料

本主題說明如何使用 Visual Studio 程式碼剖析工具命令列工具檢測預先編譯的 ASP.NET Web 元件或網站,以及收集 .NET 記憶體配置、物件存留期和詳細的執行時間資料。

注意事項注意事項

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

若要使用檢測方法收集 ASP.NET Web 元件中的資料,您可以使用 VSInstr.exe 工具產生元件的已檢測版本。 在裝載該元件的電腦上,以檢測過的元件版本取代未經檢測的元件。 然後,使用 VSPerfCLREnv.cmd 工具來初始化全域程式碼剖析環境變數,並重新啟動主機電腦。接著,啟動分析工具。

當執行檢測元件時,時間資料會自動收集至資料檔案。 您可以在程式碼剖析工作階段期間暫停和繼續資料收集。

若要結束程式碼剖析工作階段,請關閉裝載元件的 ASP.NET 背景工作處理序,然後明確地關閉程式碼剖析工具。 在許多情況下,我們建議在工作階段結尾清除程式碼剖析環境變數。

啟動程式碼剖析

若要檢測 ASP.NET Web 元件並啟動程式碼剖析

  1. 使用 VSInstr 工具產生目標應用程式的檢測版本。 如有必要,請以檢測過的二進位檔來取代 ASP.NET 主機電腦上的應用程式二進位檔。

  2. 開啟命令提示字元視窗。

  3. 初始化 .NET 程式碼剖析環境變數。 在命令提示字元視窗中,輸入:

    VSPerfClrEnv /globaltracegc

    -或-

    VSPerfClrEnv /globaltracegclife

    • /globaltracegc 收集 .NET 記憶體配置和執行時間資料。

    • /globaltracegclife 收集 .NET 記憶體配置、物件存留期和詳細的執行時間資料。

  4. 重新啟動電腦。

  5. 開啟命令提示字元視窗。

  6. 啟動程式碼剖析工具。 在命令提示字元視窗中,輸入:

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

    • /start:trace 選項會初始化程式碼剖析工具。

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

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

    注意事項注意事項

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

    選項

    說明

    /user:[Domain\]UserName

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

    /crosssession

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

    /wincounter:WinCounterPath

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

    /automark:Interval

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

    /events:Config

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

    /globaloff

    若要在暫停資料收集的情況下啟動程式碼剖析工具,請將 /globaloff 選項加入至 /start 命令列。 使用 /globalon 繼續程式碼剖析。

  7. 開啟包含已檢測之元件的網站。

控制資料收集

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

若要啟動和停止資料收集

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

    選項

    說明

    /globalon /globaloff

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

    /processon:PID /processoff:PID

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

    /threadon:TID /threadoff:TID

    針對執行緒 ID (TID) 所指定的執行緒,啟動 (/threadon) 或停止 (/threadoff) 資料收集。

  • 您也可以使用 VSPerfCmd.exe /mark 選項,將程式碼剖析標記插入資料檔案。 /mark 命令會加入識別項、時間戳記和選擇性使用者定義的文字字串。 標記可用來篩選程式碼剖析工具報告和資料檢視中的資料。

結束程式碼剖析工作階段

若要結束程式碼剖析工作階段,請關閉 ASP.NET Web 應用程式,然後使用網際網路資訊服務 (IIS) IISReset 命令關閉 ASP.NET 背景工作處理序。 呼叫 VSPerfCmd /shutdown 選項,關閉程式碼剖析工具並關閉程式碼剖析資料檔案。 VSPerfClrEnv /globaloff 命令會清除程式碼剖析環境變數。 您必須重新啟動電腦,才能套用新的環境設定。

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

  1. 關閉 ASP.NET Web 應用程式。

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

    IISReset /stop

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

    VSPerfCmd /shutdown

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

    VSPerfCmd /globaloff

  5. 重新啟動電腦。 若有必要,請重新啟動 IIS。 型別:

    IISReset /start

請參閱

概念

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

其他資源

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