並行視覺化檢視命令列公用程式 (CVCollectionCmd)
您可以使用並行視覺化檢視命令列公用程式 (CVCollectionCmd.exe) 從命令列收集追蹤,以便在 Visual Studio 2013 的並行視覺化檢視中進行檢視。此工具可在未安裝 Visual Studio 的電腦上使用。
注意事項 |
---|
並行視覺化檢視是 Visual Studio 2013 的選擇性擴充功能。(在舊版 Visual Studio 的某些版本中,已隨附並行視覺化檢視)。您可以從 Visual Studio 網站下載並行視覺化檢視 (英文)。 |
下載並行視覺化檢視命令列公用程式
若要下載及安裝此命令列公用程式,請移至 Microsoft 下載中心網站上的 Visual Studio 2013 的並行視覺化檢視收集工具 (英文),並遵循指示進行。根據預設,CVCollectionCmd.exe 會安裝在 %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (x64 電腦上為 %ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\)。
使用 CVCollectionCmd 收集追蹤
您可以使用 CVCollectionCmd 啟動應用程式,或將 CVCollectionCmd 附加至應用程式,來收集追蹤。請參閱下列與選項相關的命令參考。例如
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
命令和參數
若要取得命令列公用程式中命令和參數的說明,請在命令提示字元中輸入下列命令:
CvCollectionCmd /?
選項 |
描述 |
參數 |
傳回值 |
---|---|---|---|
Query |
傳回是否可以開始收集。 |
無 |
0,表示準備開始收集。 1,表示收集已在進行中。 2,表示收集不在進行中,但已啟用一個或多個所需的 ETW 工作階段。 |
Launch |
在並行視覺化檢視下執行指定的處理序。 |
可執行檔的路徑。 |
0,表示執行成功。 1,表示執行失敗,因為無法啟動目標應用程式。 13,表示執行失敗,因為 CVCollectionCmd 沒有足夠的權限可寫入指定的輸出目錄。 |
附加 |
開始收集系統範圍追蹤;如果指定處理序,則附加至該處理序。 |
無。 |
0,表示附加成功。 1,表示附加失敗,因為指定的處理序無效或模稜兩可。 13,表示附加失敗,因為 CVCollectionCmd 沒有足夠的權限可寫入指定的輸出目錄。 |
中斷連結 |
停止收集。 |
無。 |
0,表示中斷連結成功。 1,表示中斷連結失敗,因為目前正在收集。 2,表示中斷連結失敗,因為無法停止收集。 |
分析 |
分析指定的追蹤。 |
CVTrace 檔案的完整路徑。 |
0,表示分析成功。 1,表示無法開始分析,因為指定的追蹤是系統範圍追蹤,但未指定目標處理序。 2,表示無法開始分析,因為追蹤不是系統範圍追蹤,但已指定處理序。 3,表示分析失敗,因為指定的處理序無效。 4,表示分析失敗,因為指定的 CVTrace 檔案無效。 |
LaunchArgs |
指定目標可執行檔引數。這個選項僅適用於 Launch 命令。 |
傳遞給應用程式的命令列引數。 |
無。 |
Outdir |
指定要在其中儲存追蹤檔案的目錄。適用於 Launch 和 Attach 命令。 |
目錄路徑或相對路徑。 |
無。 |
處理序 |
指定執行 Attach 命令時要附加的處理序,或執行 Analyze 命令時要在追蹤中分析的處理序。適用於 Attach 和 Analyze 命令。 |
處理序的 PID 或名稱。 |
無。 |
組態 |
指定組態檔的路徑 (如果需要預設值以外的收集設定)。適用於 Launch、Attach 和 Analyze 命令。 |
XML 組態檔的目錄路徑或相對路徑。 |
無。 |
自訂組態設定
如果您使用 CVCollectionCmd 收集追蹤並想自訂收集設定,請使用組態檔指定這些設定。
注意事項 |
---|
當您使用 Visual Studio 收集追蹤時,不要直接修改組態檔。請改用 [進階設定] 對話方塊來修改設定。 |
若要修改收集設定,請在您要執行 CVCollectionCmd 公用程式的電腦上建立組態檔。您可以從頭開始建立組態檔,也可以從已安裝 Visual Studio 的電腦上複製組態檔,再進行修改。檔案名稱為 UserConfig.xml,並位在 [Local AppData] 資料夾中。當您執行公用程式時,請搭配 Launch、Attach 或 Analyze 命令使用 Config 選項。在與 Config 選項相關聯的參數中,指定組態檔的路徑。
組態檔標記
組態檔採用 XML 格式。以下是有效的標記和值:
標記 |
描述 |
值 |
---|---|---|
組態 |
標示整個組態檔。 |
必須包含下列項目:
|
MajorVersion |
指定組態檔的主要版本。 |
Visual Studio 2012 專案必須是 1。如果不是 1,公用程式將無法運作。 |
MinorVersion |
指定組態檔的次要版本。 |
Visual Studio 2012 專案必須是 0。如果不是 0,公用程式將無法運作。 |
IncludeEnvSymbolPath |
設定值,決定是否使用環境符號路徑 (_NT_SYMBOL_PATH)。 |
|
DeleteEtlsAfterAnalysis |
設定值,決定是否在分析完成時刪除 ETL 檔案。 |
|
SymbolPath |
指定符號伺服器的路徑。如需詳細資訊,請參閱使用 Microsoft 符號伺服器取得偵錯符號檔 (機器翻譯)。 |
目錄名稱或 URL。 |
Markers |
包含標記提供者的清單。 |
可包含零個或多個 MarkerProvider 項目。 |
MarkerProvider |
指定單一標記提供者。 |
必須包含下列項目:
可包含下列項目:
|
層級 |
設定 MarkerProvider 的重要性層級。 |
|
Guid |
ETW 標記提供者的全域唯一識別項。 |
GUID。 |
名稱 |
指定標記提供者的描述。 |
字串。 |
分類 |
指定標記提供者所收集的分類。 |
以逗號分隔字串表示多個數字或多個範圍的數字。 |
IsEnabled |
設定值,決定是否啟用標記提供者進行收集。 |
|
FilterConfig |
指定從收集篩選之 ETW 事件的組態選項清單。 |
可包含下列項目:
|
CollectClrEvents |
設定值,決定是否收集 CLR 事件。 |
|
ClrCollectionOptions |
指定是否收集原生應用程式的 CLR 事件,以及是否收集 NGEN 取消事件。 |
可包含下列一個或兩個值,或者不包含任何值:
|
CollectSampleEvents |
設定值,決定是否收集取樣事件。 |
|
CollectGpuEvents |
設定值,決定是否收集 DX 產生的事件。 |
|
CollectFileIO |
設定值,決定是否收集檔案 I/O 事件。 |
|
UserBufferSettings |
指定使用者緩衝區設定參數的清單。 |
必須包含下列項目:
|
KernelBufferSettings |
指定核心緩衝區設定參數的清單。 |
必須包含下列項目:
|
BufferFlushTimer |
指定 ETW 緩衝區的清除計時器。 |
正整數。 |
BufferSize |
配置給每個事件追蹤工作階段緩衝區的記憶體數量 (以 KB 為單位)。 |
0 至 1024 之間的數字。 |
MinimumBuffers |
配置給事件追蹤工作階段之緩衝集區的緩衝區數目下限。 |
大於或等於邏輯核心數目兩倍的正整數。 |
MaximumBuffers |
配置給事件追蹤工作階段之緩衝集區的緩衝區數目上限。 |
大於或等於 MinimumBuffers 的數字。 |
JustMyCode |
指定 Just My Code 目錄的清單。 |
零個或多個 MyCodeDirectory 項目的清單。 |
MyCodeDirectory |
指定包含程式碼的目錄。 |
絕對路徑。 |
範例
您可以複製下列範例,然後依照您的需求進行修改,而不用從頭開始建立組態檔。
<?xml version="1.0"?>
<LocalConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" MajorVersion="1" MinorVersion="0">
<IncludeEnvSymbolPath>true</IncludeEnvSymbolPath>
<DeleteEtlsAfterAnalysis>true</DeleteEtlsAfterAnalysis>
<TraceLocation>C:\traces</TraceLocation>
<SymbolPath>http://symweb</SymbolPath>
<Markers>
<MarkerProvider Name="Default" Guid="8d4925ab-505a-483b-a7e0-6f824a07a6f0" Level="Low" />
<MarkerProvider Name="TPL" Guid="2e5dba47-a3d2-4d16-8ee0-6671ffdcd7b5" Level="Normal" />
<MarkerProvider Name="TPL Dataflow" Guid="16f53577-e41d-43d4-b47e-c17025bf4025" Level="Normal" />
<MarkerProvider Name="TPL Synchronization" Guid="ec631d38-466b-4290-9306-834971ba0217" Level="Normal" />
<MarkerProvider Name="PLINQ" Guid="159eeeec-4a14-4418-a8fe-faabcd987887" Level="Normal" />
<MarkerProvider Name="Concurrency Runtime" Guid="f7b697a3-4db5-4d3b-be71-c4d284e6592f" Level="Normal" />
<MarkerProvider Name="Scenario Markers" Guid="fb9244c9-f23a-4966-8a9c-97a51f8c355b" Level="Low" />
<!-- The IsEnabled and Categories elements are optional -->
<MarkerProvider Name="myMarker1" Guid="d0dbb3a3-895c-4ce6-96d9-28f69d664dc3" Level="Critical" IsEnabled="false" Categories="0,1,3-5,8" />
<MarkerProvider Name="myMarker2" Guid="03452127-a617-4302-9e30-c0d10442e4ee" Level="Low" IsEnabled="false" Categories="0,1,3-5,8-10,11-13" />
</Markers>
<FilterConfig>
<CollectClrEvents>true</CollectClrEvents>
<ClrCollectionOptions>CollectForNative DisableNGenRundown</ClrCollectionOptions>
<CollectSampleEvents>true</CollectSampleEvents>
<CollectGpuEvents>true</CollectGpuEvents>
<CollectFileIO>true</CollectFileIO>
</FilterConfig>
<UserBufferSettings>
<BufferFlushTimer>0</BufferFlushTimer>
<BufferSize>256</BufferSize>
<MinimumBuffers>512</MinimumBuffers>
<MaximumBuffers>1024</MaximumBuffers>
</UserBufferSettings>
<KernelBufferSettings>
<BufferFlushTimer>0</BufferFlushTimer>
<BufferSize>256</BufferSize>
<MinimumBuffers>512</MinimumBuffers>
<MaximumBuffers>1024</MaximumBuffers>
</KernelBufferSettings>
<!-- List of MyCodeDirectory directories -->
<JustMyCode>
<MyCodeDirectory>C:\myBinaries1</MyCodeDirectory>
<MyCodeDirectory>C:\myBinaries2</MyCodeDirectory>
</JustMyCode>
</LocalConfig>