Compartilhar via


Utilitário de linha de comando do Visualizador de Concorrência (CVCollectionCmd)

Você pode usar o utilitário de linha de comando do Visualizador Simultâneo (CVCollectionCmd.exe) para traçar informações da linha de comando, permitindo que você as visualize no Visualizador Simultâneo para o Visual Studio. As ferramentas podem ser usadas em computadores que não têm o Visual Studio instalado.

Observação

O Analisador de Concorrência é uma extensão opcional. (Anteriormente, ele havia sido incluído no Visual Studio.) Você pode baixar as ferramentas de coleta do Concurrency Visualizer para Visual Studio através do Download Center.

Faça o download do utilitário de linha de comando do Concurrency Visualizer

Para baixar e instalar o utilitário de linha de comando, acesse As Ferramentas de Coleção de Visualizadores Simultâneos para Visual Studio e siga as instruções. Por padrão, CVCollectionCmd.exe é instalado em %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ em computadores x64).

Coletar um rastreamento com CVCollectionCmd

Você pode coletar um rastreamento iniciando o aplicativo com CVCollectionCmd ou anexando a ele. Consulte a referência de comando abaixo para obter suas opções. Por exemplo

<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data

Comandos e parâmetros

Para obter ajuda sobre os comandos e parâmetros no utilitário de linha de comando, digite-o no prompt de comando:

CvCollectionCmd /?

Opção Description Parâmetros Valores retornados
Query Retorna se a coleção pode ser iniciada. None 0 se a coleção estiver pronta para começar.

1 se a coleta já estiver em andamento.

2 se o processo de coleta não estiver em andamento, mas uma ou mais das sessões ETW necessárias já estiverem habilitadas.
Launch Executa o processo especificado no Concurrency Visualizer. O caminho do executável. 0 se a execução tiver sido bem-sucedida.

1 se a execução falhou porque o aplicativo de destino não pôde ser iniciado.

13 se a execução falhou porque CVCollectionCmd não tem permissões suficientes para gravar no diretório de saída especificado.
Attach Começa a coletar um rastreio em todo o sistema; ou então, anexa a um processo, caso um seja especificado. Nenhum. 0 se o anexo tiver sido bem-sucedido.

1 se o anexo falhou porque o processo especificado é inválido ou ambíguo.

13 se o anexo falhou porque CVCollectionCmd não tem permissões suficientes para gravar no diretório de saída especificado.
Detach Interrompe a coleção. Nenhum. 0 se o desanexamento tiver sido bem-sucedido.

1 se a dissociação falhou porque a coleta não está em andamento no momento.

2 se o desligamento falhou porque a coleção não pôde ser interrompida.
Analyze Analisa o traço especificado. O caminho completo do arquivo CVTrace. 0 se a análise tiver sido bem-sucedida.

1 se a análise não puder ser iniciada porque o rastreamento especificado era de todo o sistema, mas nenhum processo de destino foi especificado.

2 se a análise não puder ser iniciada porque o rastreamento não foi realizado em todo o sistema e um processo foi especificado.

3 se a análise falhou porque o processo especificado é inválido.

4 se a análise falhou porque o arquivo CVTrace especificado é inválido.
LaunchArgs Especifica os argumentos executáveis de destino. Essa opção se aplica somente ao comando Iniciar. Os argumentos de linha de comando para o aplicativo. Nenhum.
Outdir Especifica o diretório no qual salvar arquivos de rastreamento. Aplica-se aos comandos Iniciar e Anexar. Um caminho de diretório ou caminho relativo. Nenhum.
Processo Especifica o processo a ser anexado quando o comando Anexar é executado ou o processo em um rastreamento a ser analisado quando o comando Analisar é executado. Aplica-se aos comandos Anexar e Analisar. O PID ou o nome do processo. Nenhum.
Config Especifica o caminho do arquivo de configuração, se desejar configurações de coleção diferentes dos padrões. Aplica-se aos comandos Iniciar, Anexar e Analisar. O caminho do diretório ou o caminho relativo do arquivo de configuração XML. Nenhum.

Personalizar as configurações

Se você usar CVCollectionCmd para coletar rastreamentos e quiser personalizar as configurações da coleção, use um arquivo de configuração para especificá-los.

Observação

Quando você usa o Visual Studio para coletar rastreamentos, não modifique diretamente o arquivo de configuração. Em vez disso, use a caixa de diálogo Configurações Avançadas para modificar as configurações.

Para modificar as configurações de coleção, crie um arquivo de configuração no computador em que você executará o utilitário CVCollectionCmd. Você pode criar o arquivo de configuração do zero ou copiar o arquivo de configuração no computador que tem o Visual Studio instalado e modificá-lo. O arquivo é nomeado UserConfig.xml e está localizado na pasta Local AppData . Ao executar o utilitário, use a opção Config em conjunto com o comando Iniciar, Anexar ou Analisar. No parâmetro associado à opção Config, especifique o caminho do arquivo de configuração.

Tags de arquivo de configuração

O arquivo de configuração é baseado em XML. Aqui estão as tags e os valores válidos:

Etiqueta Description Valores
Config Demarca o arquivo de configuração geral. Deve conter estes elementos:

- Versão Menor
- MajorVersion
MajorVersion Especifica a versão principal do arquivo de configuração. Deve ser 1 para a maioria dos projetos do Visual Studio. Se não for 1, o utilitário não funcionará.
MinorVersion Especifica a versão menor do arquivo de configuração. Deve ser 0 para a maioria dos projetos do Visual Studio. Caso não seja 0, o utilitário não funcionará.
IncluirCaminhoSimboloEnv Define um valor que determina se o caminho do símbolo de ambiente (_NT_SYMBOL_PATH) é usado. -Verdadeiro
- Falso
Excluir ETLs Após Análise Define um valor que determina se os arquivos ETL são excluídos quando a análise é concluída. -Verdadeiro
- Falso
SymbolPath Especifica o caminho do servidor de símbolos. Para obter mais informações, consulte Use o Servidor de Símbolos da Microsoft para obter arquivos de símbolo de depuração. Um nome de diretório ou URL.
Marcadores Contém a lista de provedores de marcadores. Pode conter zero ou mais elementos MarkerProvider.
Provedor de Marcadores Especifica um provedor de marcador único. Deve conter estes elementos:

-Nível
- GUID
-Nome

Pode conter estes elementos:

-Categorias
- IsEnabled
Level Define o nível de importância de um MarkerProvider. -Baixo
-Normal
-Alto
-Crítico
-Tudo
Guid O identificador global exclusivo do provedor de marcadores ETW. UM GUID.
Nome Especifica a descrição do provedor de marcadores. Uma cadeia de caracteres.
Categorias Especifica as categorias coletadas para o provedor de marcadores. Uma sequência delimitada por vírgulas de números ou intervalos de números.
EstáAtivado Define um valor que determina se o provedor de marcadores está habilitado para coleta de dados. -Verdadeiro
- Falso
FilterConfig Especifica a lista de opções de configuração dos eventos ETW filtrados da coleção. Pode conter estes elementos:

- CollectClrEvents
- ClrCollectionOptions
- CollectSampleEvents
- CollectGpuEvents
- CollectFileIO
CollectClrEvents Defina um valor que determina se os eventos CLR são coletados. -Verdadeiro
- Falso
ClrCollectionOptions Especifica se os eventos CLR devem ser coletados para aplicativos nativos e se os eventos de rundown do NGEN devem ser coletados. Pode conter um, ambos ou nenhum destes valores:

– CollectForNative
- DisableNGenRundown
ColetarEventosDeAmostra Define um valor que determina se os eventos de exemplo são coletados. -Verdadeiro
- Falso
CollectGpuEvents Define um valor que determina se os eventos gerados pelo DX são coletados. -Verdadeiro
- Falso
CollectFileIO Define um valor que determina se os eventos de E/S do arquivo são coletados. -Verdadeiro
- Falso
ConfiguraçõesDeBufferDoUsuário Especifica a lista de parâmetros de configurações de buffer do usuário. Deve conter estes elementos:

- BufferFlushTimer
- BufferSize
- MinimumBuffers
- MaximumBuffers
Configurações do Buffer do Kernel (KernelBufferSettings) Especifica a lista de parâmetros de configurações de buffer do kernel. Deve conter estes elementos:

- BufferFlushTimer
Tamanho do Buffer
- MinimumBuffers
- MaximumBuffers
BufferFlushTimer Especifica o temporizador de liberação dos buffers ETW. Um número inteiro positivo.
Tamanho do Buffer Quantidade de memória alocada para cada buffer de sessão de rastreamento de eventos, em quilobytes. Um número de 0 a 1024.
MinimumBuffers O número mínimo de buffers que são alocados para o pool de buffers da sessão de rastreamento de eventos. Um inteiro positivo maior ou igual a duas vezes o número de núcleos lógicos.
MaximumBuffers Número máximo de buffers que são alocados para o pool de buffers da sessão de rastreamento de eventos. Um número maior ou igual a MinimumBuffers.
JustMyCode Especifica a lista de diretórios Just My Code. Uma lista de zero ou mais elementos MyCodeDirectory.
MyCodeDirectory Especifica um diretório que contém seu código. Um caminho absoluto.

Example

Em vez de criar um arquivo de configuração desde o início, você pode copiar o exemplo a seguir e modificá-lo para atender aos seus requisitos.

<?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>