並行視覺化檢視命令列公用程式 (CVCollectionCmd)
您可以使用 [並行視覺化檢視] 命令列公用程式 (CVCollectionCmd.exe)去 收集並在沒有 Visual Studio 的電腦上的處理序追蹤。您可以在英文版的 Visual Studio 的電腦上收集的追蹤,以便在 [並行視覺化檢視]檢視它們。
安裝和部署公用程式
安裝 Visual Studio DVD 功能
在 DVD,尋找最上層資料夾名為「並行視覺化檢視」。
在資料夾,請執行 concvi_standalonecollection.exe。
從 Visual Studio Web 安裝檔案去安裝
尋找您下載的安裝檔案。檔案名稱取決於您下載 Visual Studio 版本。
開啟[命令提示字元] 視窗並變更尋找安裝檔案的目錄。
執行命令 <install file>/layout, install file 是下載的檔案名稱。設定命令會建立名為「並行視覺化檢視」的資料夾。
在「並行視覺化檢視」資料夾,請執行 concvi_standalonecollection.exe。
部署在沒有 Visual Studio 的電腦上。
在具有 Visual Studio 的電腦找出 concvi_standalonecollection.exe 。(請參閱前兩個程序)。
複製 concvi_standalonecollection.exe 至沒有 Visual Studio 的電腦。
執行 concvi_standalonecollection.exe。
命令和參數
您可以從這些命令和參數的說明使用:
CvCollectionCmd /?
選項 |
描述 |
參數 |
傳回值 |
---|---|---|---|
查詢 |
傳回收集是否可以開始。 |
None |
0,如果集合開始。 1,如果收集已在執行中。 2,如果集合不在執行中,不過,一或多個必要的 ETW 工作階段已啟用。 |
啟動 |
執行指定的[並行視覺化檢視]的處理序。 |
可執行檔的路徑。 |
如果為 0,則執行成功。 1,執行失敗,因為無法啟動目標應用程式。 如果為 13,則會失敗,因為 CVCollectionCmd 沒有足夠的使用權限給指定的輸出目錄。 |
附加 |
開始收集追蹤系統範圍,否則,如果已指定處理序則附加在處理序上。 |
無。 |
0,如果附件成功。 1,無法附加至指定的處理序,因為它是無效或模稜兩可的。 如果為 13,則為附加失敗,因為 CVCollectionCmd 沒有足夠的使用權限給指定的輸出目錄。 |
中斷連結 |
停止集合。 |
無。 |
如果為 0,則個別子項目成功。 如果為 1,則獨立子項目失敗,因為集合目前正在進行中。 如果為 2,則獨立子項目失敗,因為集合無法停止。 |
分析 |
分析指定的追蹤檔案。 |
CVT追蹤檔案的完整路徑。 |
0,如果程式碼剖析成功。 如果為 1,則分析無法啟動,因為指定的追蹤是全系統的,不過,目標處理序尚未指定。 如果為2,澤分析失敗,因為追蹤不是系統範圍,但指定了處理序。 如果為3,分析失敗,因為指定的處理序無效。 如果為4,分析失敗,因為指定的 CVTrace 檔案無效。 |
LaunchArgs |
指定目標可執行的引數。這個選項只適用於啟動命令。 |
要傳遞至應用程式的命令列引數。 |
無。 |
OutDir |
指定要儲存輸出的目錄。適用於啟動和附加命令。 |
目錄路徑或相對路徑。 |
無。 |
處理序 |
當附加命令執行時,指定處理序附加,或是要分析分析命令時要追蹤的處理序執行。適用於附加和分析命令。 |
PID或處理序的名稱。 |
無。 |
組態 |
如果您要收集設定而不是預設值,指定組態檔的路徑。適用於啟動、附加和分析命令。 |
XML 組態檔的目錄路徑或相對路徑。 |
無。 |
自訂套用組態設定
如果您使用 CVCollectionCmd 收集追蹤,而您想要自訂收集設定,則會使用組態檔中指定這些項目。
注意事項 |
---|
當您使用 Visual Studio 收集追蹤時,不要直接修改組態檔。相反地,請使用 進階設定 對話方塊修改設定。 |
若要變更設定,請在您要執行 CVCollectionCmd 公用程式之電腦上的組態檔。可以建立組態檔,或者您可以複製到已安裝 Visual Studio 的電腦上的組態檔並修改該。檔案會命名 UserConfig.xml [區域 AppData] 且位於資料夾中。當您執行公用程式時,請使用啟動一起使用來設定選項,附加或分析命令。在設定選項的參數,指定組態檔的路徑。
組態檔標記
組態檔是 以XML- 為基礎的檔案。這裡有有效的標記和值:
Tag |
描述 |
值 |
---|---|---|
組態 |
標記為整個組態檔。 |
必須包含下列項目:
|
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 緩衝區足夠的計時器。 |
正整數 |
緩衝區大小 |
針對每一個事件追蹤工作階段緩衝區所配置的記憶體數量,以 KB 為單位。 |
從 0 到 1024 的數字。 |
MinimumBuffers |
為事件追蹤工作階段的緩衝區集區所配置的最小緩衝區數目。 |
正整數大於或等於兩個邏輯核心數目。 |
MaximumBuffers |
為事件追蹤工作階段的緩衝區集區所配置的最大緩衝區數目。 |
數值必須大於或等於最小緩衝區。 |
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>