コンカレンシー ビジュアライザーのコマンド ライン ユーティリティ (CVCollectionCmd.exe) を使用すると、コマンド ラインからトレースを収集して、Visual Studio のコンカレンシー ビジュアライザーでトレースを表示できます。 このツールは、Visual Studio がインストールされていないコンピューターで使用できます。
注
コンカレンシー ビジュアライザーはオプションの拡張機能です。 (以前は Visual Studio に含まれていました。 Visual Studio のコンカレンシー ビジュアライザー コレクション ツール は、ダウンロード センターからダウンロードできます。
コンカレンシー ビジュアライザーのコマンド ライン ユーティリティをダウンロードする
コマンド ライン ユーティリティをダウンロードしてインストールするには、 コンカレンシー ビジュアライザー コレクション ツール for Visual Studio に移動し、指示に従います。 既定では、 CVCollectionCmd.exe は %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ (x64 コンピューター) にインストールされます。
CVCollectionCmd を使用してトレースを収集する
CVCollectionCmd を使用してアプリを起動するか、それにアタッチすることで、トレースを収集できます。 オプションについては、以下のコマンド リファレンスを参照してください。 次に例を示します。
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
コマンドおよびパラメーター
コマンド ライン ユーティリティのコマンドとパラメーターに関するヘルプを表示するには、コマンド プロンプトで次のように入力します。
CvCollectionCmd /?
| Option | Description | パラメーター | 戻り値 |
|---|---|---|---|
| Query | コレクションを開始できるかどうかを返します。 | None | コレクションを開始する準備ができている場合は 0。 コレクションが既に進行中の場合は 1。 コレクションが進行中ではなく、必要な ETW セッションの 1 つ以上が既に有効になっている場合は 2。 |
| Launch | コンカレンシー ビジュアライザーで指定されたプロセスを実行します。 | 実行可能ファイルのパス。 | 実行が成功した場合は 0。 ターゲット アプリケーションを起動できなかったために実行に失敗した場合は 1。 CVCollectionCmd に指定された出力ディレクトリに書き込むための十分なアクセス許可がないため、実行に失敗した場合は 13。 |
| 添付 | システム全体のトレース収集を開始します。プロセスが指定されている場合は、そのプロセスに接続します。 | なし。 | 添付ファイルが成功した場合は 0。 指定されたプロセスが無効またはあいまいであるために添付ファイルが失敗した場合は 1。 CVCollectionCmd に指定された出力ディレクトリに書き込むための十分なアクセス許可がないため、添付ファイルが失敗した場合は 13。 |
| Detach | コレクションを停止します。 | なし。 | デタッチメントが成功した場合は 0。 コレクションが現在進行中でないため、デタッチに失敗した場合には、1 を返します。 コレクションを停止できなかったためにデタッチに失敗した場合は 2。 |
| 分析する | 指定したトレースを分析します。 | CVTrace ファイルの完全なパス。 | 分析に成功した場合は 0。 1 指定されたトレースがシステム全体で、ターゲット プロセスが指定されていないために分析を開始できない場合は 1。 トレースがシステム全体ではなく、プロセスが指定されたために分析を開始できない場合は 2。 指定されたプロセスが無効であるために分析に失敗した場合は 3。 指定された CVTrace ファイルが無効であるために分析に失敗した場合は 4。 |
| LaunchArgs | ターゲット実行可能ファイルの引数を指定します。 このオプションは、Launch コマンドにのみ適用されます。 | アプリケーションへのコマンド ライン引数。 | なし。 |
| Outdir | トレース ファイルを保存するディレクトリを指定します。 起動コマンドとアタッチ コマンドに適用されます。 | ディレクトリ パスまたは相対パス。 | なし。 |
| プロセス | Attach コマンドの実行時にアタッチするプロセス、または Analyze コマンドの実行時に分析するトレース内のプロセスを指定します。 [アタッチ] および [分析] コマンドに適用されます。 | PID またはプロセスの名前。 | なし。 |
| Config | 既定値以外のコレクション設定が必要な場合は、構成ファイルのパスを指定します。 [起動]、[アタッチ]、[分析] のコマンドに適用されます。 | XML 構成ファイルのディレクトリ パスまたは相対パス。 | なし。 |
構成設定をカスタマイズする
CVCollectionCmd を使用してトレースを収集し、コレクション設定をカスタマイズする場合は、構成ファイルを使用してトレースを指定します。
注
Visual Studio を使用してトレースを収集する場合は、構成ファイルを直接変更しないでください。 代わりに、[ 詳細設定] ダイアログ ボックスを使用して設定を変更します。
コレクション設定を変更するには、CVCollectionCmd ユーティリティを実行するコンピューターに構成ファイルを作成します。 構成ファイルを最初から作成することも、Visual Studio がインストールされているコンピューターに構成ファイルをコピーして変更することもできます。 ファイルは UserConfig.xml という名前で、 Local AppData フォルダーにあります。 ユーティリティを実行する場合は、[起動]、[アタッチ]、[分析]コマンドと組み合わせて[構成]オプションを使用します。 Config オプションに関連付けられているパラメーターで、構成ファイルのパスを指定します。
構成ファイルタグ
構成ファイルは XML ベースです。 有効なタグと値を次に示します。
| タグ | Description | 価値観 |
|---|---|---|
| Config | 構成ファイル全体を区切ります。 | 次の要素を含む必要があります。 - マイナーバージョン (MinorVersion) - メジャーバージョン (MajorVersion) |
| MajorVersion | 構成ファイルのメジャー バージョンを指定します。 | ほとんどの Visual Studio プロジェクトでは 1 にする必要があります。 1 でない場合、ユーティリティは機能しません。 |
| マイナーバージョン | 構成ファイルのマイナー バージョンを指定します。 | ほとんどの Visual Studio プロジェクトでは 0 にする必要があります。 0 でない場合、ユーティリティは機能しません。 |
| 环境シンボルパスを含む | 環境シンボル パス (_NT_SYMBOL_PATH) を使用するかどうかを決定する値を設定します。 | - 真 -偽 |
| 分析後にETLsを削除する | 分析が完了したときに ETL ファイルを削除するかどうかを決定する値を設定します。 | - 真 -偽 |
| SymbolPath | シンボル サーバーのパスを指定します。 詳細については、「 Microsoft シンボル サーバーを使用してデバッグ シンボル ファイルを取得する」を参照してください。 | ディレクトリ名または URL。 |
| Markers | マーカー プロバイダーの一覧を格納します。 | 0 個以上の MarkerProvider 要素を含めることができます。 |
| MarkerProvider | 1 つのマーカー プロバイダーを指定します。 | 次の要素を含む必要があります。 -レベル - GUID -名前 次の要素を含めることができます。 -カテゴリ - IsEnabled |
| レベル | MarkerProvider の重要度レベルを設定します。 | -低い -正常 -高い -危うい -すべてが |
| Guid | ETW マーカープロバイダーのグローバルに一意の識別子。 | GUID。 |
| 名前 | マーカー プロバイダーの説明を指定します。 | 文字列。 |
| カテゴリ | マーカー プロバイダー用に収集されるカテゴリを指定します。 | 数値または数値の範囲のコンマ区切り文字列。 |
| 有効化されている | マーカー プロバイダーがコレクションに対して有効かどうかを決定する値を設定します。 | - 真 -偽 |
| FilterConfig | コレクションからフィルター処理される ETW イベントの構成オプションの一覧を指定します。 | 次の要素を含めることができます。 - CollectClrEvents - ClrCollectionOptions - CollectSampleEvents - GPUイベントを収集する - CollectFileIO |
| CLRイベント収集 | CLR イベントを収集するかどうかを決定する値を設定します。 | - 真 -偽 |
| ClrCollectionOptions | ネイティブ アプリの CLR イベントを収集するかどうか、および NGEN ランダウン イベントを収集するかどうかを指定します。 | これらの値の 1 つ、両方、またはいずれも含まれていない場合があります。 - CollectForNative - DisableNGenRundown |
| サンプルイベント収集 | サンプル イベントを収集するかどうかを決定する値を設定します。 | - 真 -偽 |
| GPUイベントを収集する | DX によって生成されたイベントを収集するかどうかを決定する値を設定します。 | - 真 -偽 |
| CollectFileIO | ファイル I/O イベントを収集するかどうかを決定する値を設定します。 | - 真 -偽 |
| ユーザーバッファ設定 | ユーザー バッファー設定パラメーターの一覧を指定します。 | 次の要素を含む必要があります。 - BufferFlushTimer - バッファサイズ (BufferSize) - 最小バッファ数 - MaximumBuffers |
| カーネルバッファ設定 (KernelBufferSettings) | カーネル バッファー設定パラメーターの一覧を指定します。 | 次の要素を含む必要があります。 - BufferFlushTimer - バッファサイズ (BufferSize) - 最小バッファ数 - MaximumBuffers |
| バッファフラッシュタイマー | ETW バッファーのフラッシュ タイマーを指定します。 | 正の整数。 |
| バッファサイズ | イベント トレース セッション バッファーごとに割り当てられるメモリの量 (KB 単位)。 | 0 から 1024 までの数値。 |
| MinimumBuffers | イベント トレース セッションのバッファー プールに割り当てられるバッファーの最小数。 | 論理コア数の 2 倍以上の正の整数。 |
| 最大バッファ | イベント トレース セッションのバッファー プールに割り当てられるバッファーの最大数。 | MinimumBuffers 以上の数値。 |
| JustMyCode | マイ コードのみディレクトリの一覧を指定します。 | 0 個以上の MyCodeDirectory 要素のリスト。 |
| MyCodeDirectory | コードを含むディレクトリを指定します。 | 絶対パス。 |
Example
最初から構成ファイルを作成する代わりに、次の例をコピーし、要件を満たすように変更できます。
<?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>