HOW TO:使用程式碼剖析工具命令列以檢測原生服務並收集詳細計時資料
本主題說明如何使用 Visual Studio 程式碼剖析工具命令列工具檢測原生 (C/C++) 服務,以及收集詳細的執行時間資料。
注意事項 |
---|
如果服務無法在電腦啟動後重新啟動,例如只在作業系統啟動時一起啟動的服務,您便無法使用檢測方法對服務進行程式碼剖析。 程式碼剖析工具的命令列工具位於 Visual Studio 安裝目錄的 \Team Tools\Performance Tools 子目錄中。 在 64 位元電腦上,64 位元和 32 位元版本的工具都可以使用。 若要使用程式碼剖析工具的命令列工具,必須將工具路徑加入至命令提示字元視窗的 PATH 環境變數,或將它加入至命令本身。 如需詳細資訊,請參閱指定程式碼剖析工具命令列工具的路徑。 |
若要使用檢測方法收集原生服務中的詳細執行時間資料,您可以使用 VSInstr.exe 工具產生元件的已檢測版本。 然後,使用已檢測的版本取代未檢測的服務,藉此確認服務已設定為手動啟動。 接著啟動程式碼剖析工具。
當服務啟動時,執行時間資料會自動收集至資料檔案。 您可以在程式碼剖析工作階段期間暫停和繼續資料收集。
若要結束程式碼剖析工作階段,請關閉服務,然後明確地關閉程式碼剖析工具。
以程式碼剖析工具啟動應用程式
若要啟動程式碼剖析原生服務
開啟命令提示字元視窗。
使用 VSInstr 工具產生服務二進位檔案的檢測版本。
以檢測後的版本取代原始的二進位檔案。 在 [Windows 服務控制管理員] 中,確定服務的 [啟動類型] 設定為 [手動]。
啟動程式碼剖析工具。 輸入:
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 工作管理員] 的 [處理程序] 索引標籤上的 [使用者名稱] 資料行。
對其他登入工作階段中的處理序啟用程式碼剖析。 如果 ASP.NET 應用程式在不同的工作階段中執行,就必須有這個選項。 工作階段 ID 列於 [Windows 工作管理員] 之 [處理程序] 索引標籤上的 [工作階段識別碼] 資料行。 /CS 可以當做 /crosssession 的縮寫來指定。
/waitstart[:Interval]
指定在程式碼剖析工具傳回錯誤之前,等候它初始化的秒數。 如果未指定 Interval,程式碼剖析工具會一直等待。 根據預設,/start 會立即傳回。
若要在暫停資料收集的情況下啟動程式碼剖析工具,請將 /globaloff 選項加入至 /start 命令列。 使用 /globalon 繼續程式碼剖析。
/counter:Config
從 Config 中指定的處理器效能計數器收集資訊。 計數器資訊會加入至每個程式碼剖析事件收集的資料中。
/wincounter:WinCounterPath
指定程式碼剖析期間要收集的 Windows 效能計數器。
/automark:Interval
僅能與 /wincounter 搭配使用。 指定 Windows 效能計數器收集事件之間的毫秒數。 預設為 500 毫秒。
/events:Config
指定程式碼剖析期間要收集的 Windows 事件追蹤 (ETW) 事件。 ETW 事件是在不同的 (.etl) 檔案中收集的。
從 [服務控制管理員] 啟動服務。
控制資料收集
當服務執行時,您可以使用 VSPerfCmd.exe 選項,啟動及停止將資料寫入程式碼剖析工具資料檔案。 控制資料收集可讓您收集特定程式執行部分的資料,例如服務的開始或結束。
若要啟動和停止資料收集
下列 VSPerfCmd 選項配對會啟動和停止資料收集。 在不同的命令列上指定每個選項。 您可以多次開啟或關閉資料收集。
選項
說明
啟動 (/globalon) 或停止 (/globaloff) 所有處理序的資料收集。
/processon:PID /processoff:PID
啟動 (/processon) 或停止 (/processoff) 對處理序 ID (PID) 所指定的處理序進行資料收集。
/threadon:TID /threadoff:TID
啟動 (/threadon) 或停止 (/threadoff) 對執行緒 ID (TID) 所指定的執行緒進行資料收集。
您也可以使用 VSPerfCmd.exe /mark 選項,將程式碼剖析標記插入資料檔案。 /mark 命令會加入識別項、時間戳記和選擇性使用者定義的文字字串。 標記可用來篩選程式碼剖析工具報告和資料檢視中的資料。
結束程式碼剖析工作階段
若要結束程式碼剖析工作階段,請關閉執行檢測元件的應用程式,然後呼叫 VSPerfCmd /shutdown 選項以關閉程式碼剖析工具,並關閉程式碼剖析資料檔案。
若要結束程式碼剖析工作階段
從 [服務控制管理員] 停止服務。
關閉程式碼剖析工具。 輸入:
VSPerfCmd /shutdown
將檢測模組替換成原始模組。 如有必要,請重新設定服務的啟動類型。