HOW TO:收集程式行層級取樣資料
更新:2007 年 11 月
程式行層級取樣是分析工具 (Profiler) 的一項功能,用以判斷在處理器密集函式 (例如具有較多專有樣本的函式) 的程式碼中,處理器必須花費最多時間的部分。
概觀
對於程式行層級取樣,分析工具會定期執行程式呼叫堆疊,並彙總這些結果。這些結果顯示取得樣本時處理器所執行的指令。收集的專有樣本相關資料接著會進行分析,以識別程式碼行和指令指標 (IP)。
程式行層級取樣適用於 Managed 程式碼,也適用於機器碼。顯示這些資料的效能報告包括 [程式行] 檢視和 [模組] 檢視。
機器碼沒有字元開頭/結尾資訊。在多行陳述式中,機器碼沒有行開頭資訊,只有行結尾資訊。
可用的資料
可用的程式行層級取樣資料包括下列資訊:
函式名稱。
函式位址。
行開頭 – 取樣程式碼的行號。
行結尾 – 結尾原始程式碼行號。這通常與 [開頭行] 資料相同,但單一程式陳述式跨多個原始程式碼行時例外。
開頭字元 – 彙總樣本的開頭資料行。這通常是 0,但單行包含多個程式陳述式時例外。
字元結尾 – 彙總樣本的結尾資料行。
IP – 取得彙總樣本的位址 (僅限 IP 檢視)。
在 [模組] 檢視中,如果函式具有程式行層級的統計資料,這些統計資料都會以巢狀方式放在每個函式底下。此外,還會顯示置於每一行底下的巢狀 IP 層級統計資料。
關閉 Managed 程式碼的程式行層級取樣
依預設,程式行層級取樣為開啟狀態。您可以執行下列其中一項動作,關閉 Managed 程式碼的程式行層級資料收集功能:
在進行程式碼剖析之前,輸入 VSPerfCLREnv /samplelineoff。這會同時影響應用程式和服務。
-或-
啟動應用程式時,輸入 VSPerfCmd /lineoff <other arguments>。