次の方法で共有


コンカレンシー ビジュアライザーコマンド ライン ユーティリティ (CVCollectionCmd)

コンカレンシー ビジュアライザーのコマンド ライン ユーティリティ (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>