Partilhar via


Utilitário de linha de comandos do Visualizador de Concurrência (CVCollectionCmd)

Você pode usar o utilitário de linha de comandos Concurrency Visualizer (CVCollectionCmd.exe) para coletar traços da linha de comandos, permitindo que você possa visualizá-los no Concurrency Visualizer do Visual Studio. As ferramentas podem ser usadas em computadores que não têm o Visual Studio instalado.

Observação

O Visualizador de Simultaneidade é uma extensão opcional. (Anteriormente, ele havia sido incluído no Visual Studio.) Você pode baixar as ferramentas de coleção do Visualizador de Simultaneidade para Visual Studio no Centro de Download.

Baixe o utilitário de linha de comando Concurrency Visualizer

Para baixar e instalar o utilitário de linha de comando, vá para Concurrency Visualizer Collection Tools for 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).

Recolher um registo com CVCollectionCmd

Você pode obter um registo iniciando o aplicativo com CVCollectionCmd ou ligando-se ao mesmo. Consulte a referência de comando abaixo para 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 isso no prompt de comando:

CvCollectionCmd /?

Opção Description Parâmetros Valores de retorno
Query Retorna se a colecção pode ser iniciada. Nenhum 0 se a recolha estiver pronta para começar.

1 se a recolha já estiver em curso.

2 se a 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 foi 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 tem permissões insuficientes para gravar no diretório de saída especificado.
Anexar Começa a recolher um rastreamento em todo o sistema; caso contrário, liga-se a um processo especificado. Nenhum. 0 se a ligação for bem-sucedida.

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

13 se o anexo falhou porque CVCollectionCmd tem permissões insuficientes para gravar no diretório de saída especificado.
Detach Interrompe a coleta. Nenhum. 0 se o destacamento tiver êxito.

1 se o destacamento falhou porque a recolha não está atualmente em curso.

2 se o descolamento falhou porque a recolha não pôde ser interrompida.
Analisar Analisa o traço especificado. O caminho completo do arquivo CVTrace. 0 se a análise for bem-sucedida.

1 Se a análise não puder ser iniciada porque o rastreamento especificado estava em 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 abrangia o sistema completo e especificaram um processo.

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. Esta opção aplica-se apenas ao comando Iniciar. Os argumentos de linha de comando para a aplicação. 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 que se deve anexar quando se executa o comando Anexar, ou o processo em um rastreamento para análise quando se executa o comando Analisar. Aplica-se aos comandos Anexar e Analisar. O PID ou o nome do processo. Nenhum.
Configuração Especifica o caminho do arquivo de configuração, se você quiser configurações de coleção diferentes dos padrões. Aplica-se aos comandos Iniciar, Anexar e Analisar. O caminho do diretório ou caminho relativo do arquivo de configuração XML. Nenhum.

Personalizar definições de configuração

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

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 na máquina onde você executará o utilitário CVCollectionCmd. Você pode criar o arquivo de configuração do zero ou pode copiar o arquivo de configuração no computador que tem o Visual Studio instalado e modificá-lo. O arquivo é chamado UserConfig.xml e está localizado na pasta AppData Local . 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 valores válidos:

Tag Description Valores
Configuração Demarca o arquivo de configuração geral. Deve conter os seguintes elementos:

- Versão Menor
- Versão Principal
Versão Principal 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á.
Versão Menor Especifica a versão menor do arquivo de configuração. Deve ser 0 para a maioria dos projetos do Visual Studio. Se não for igual a 0, o utilitário não funcionará.
IncludeEnvSymbolPath Define um valor que determina se o caminho do símbolo de ambiente (_NT_SYMBOL_PATH) é usado. - Verdade
- Falso
EliminarETLsApósAnálise Define um valor que determina se os arquivos ETL são excluídos quando a análise é concluída. - Verdade
- Falso
SymbolPath Especifica o caminho do servidor de símbolos. Para obter mais informações, consulte Utilizar o Microsoft Symbol Server para obter ficheiros de símbolos 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.
MarkerProvider Especifica um único provedor de marcador. Deve conter os seguintes elementos:

- Nível
- GUID
- Nome

Pode conter estes elementos:

- Categorias
- EstáAtivado
Nível Define o nível de importância de um MarkerProvider. - Baixo
- Normal
- Alto
- Crítica
- Tudo
Guia 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 do marcador. Uma sequência de números ou intervalos de números delimitados por vírgula.
Está Ativado Define um valor que determina se o provedor de marcador está habilitado para coleção. - Verdade
- Falso
FilterConfig Especifica a lista de opções de configuração dos eventos ETW que são filtrados da coleção. Pode conter os seguintes elementos:

- CollectClrEvents
- ClrCollectionOptions
- ColetarEventosAmostrais
- CollectGpuEvents
- CollectFileIO
CollectClrEvents Defina um valor que determine se os eventos CLR são coletados. - Verdade
- Falso
ClrCollectionOptions Especifica se devem ser coletados eventos CLR em aplicativos nativos e se devem ser coletados eventos de execução NGEN. Pode conter um, ambos ou nenhum destes valores:

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

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

- BufferFlushTimer
- BufferSize
- MinimumBuffers
- MaximumBuffers
BufferFlushTimer Especifica o timer de esvaziamento 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 kilobytes. Um número de 0 a 1024.
MínimoBuffers O número mínimo de buffers 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 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 dos 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, em seguida, modificá-lo para atender às suas necessidades.

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