Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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>