Utilità della riga di comando del visualizzatore di concorrenza (CVCollectionCmd)Concurrency Visualizer command-line utility (CVCollectionCmd)

L'utilità della riga di comando del visualizzatore di concorrenza (CVCollectionCmd.exe) consente di raccogliere tracce dalla riga di comando in modo da poterle visualizzare nel visualizzatore di concorrenza per Visual Studio.You can use the Concurrency Visualizer command-line utility (CVCollectionCmd.exe) to collect traces from the command line so that you can view them in the Concurrency Visualizer for Visual Studio. Questi strumenti possono essere usati nei computer in cui non è installato Visual Studio.The tools can be used on computers that do not have Visual Studio installed.

Note

A partire da Visual Studio 2013, il Visualizzatore di concorrenza è un'estensione facoltativa.Starting in Visual Studio 2013, the Concurrency Visualizer is an optional extension. (In precedenza era stato incluso in Visual Studio.) È possibile scaricare gli Strumenti di raccolta del visualizzatore di concorrenza per Visual Studio 2015 dall'Area download.(Previously it had been included in Visual Studio.) You can download the Concurrency Visualizer collection tools for Visual Studio 2015 from the Download Center.

Scaricare l'utilità della riga di comando del visualizzatore di concorrenzaDownload the Concurrency Visualizer command-line utility

Per scaricare e installare l'utilità riga di comando, passare a Strumenti di raccolta del visualizzatore di concorrenza per Visual Studio 2015 e seguire le istruzioni.To download and install the command-line utility, go to Concurrency Visualizer Collection Tools for Visual Studio 2015 and follow the instructions. Per impostazione predefinita, CVCollectionCmd.exe è installato in %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ nei computer x64).By default, CVCollectionCmd.exe is installed in %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ on x64 computers).

Raccogliere una traccia con CVCollectionCmdCollect a trace with CVCollectionCmd

È possibile raccogliere una traccia avviando l'app con CVCollectionCmd oppure tramite una connessione all'app.You can collect a trace by starting the app with CVCollectionCmd, or by attaching to it. Per le opzioni disponibili, vedere i riferimenti ai comandi seguenti.See the command reference below for your options. Esempio:For example

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

Comandi e parametriCommands and parameters

Per ottenere informazioni sui comandi e sui parametri nell'utilità da riga di comando, digitare quanto segue al prompt dei comandi:To get help about the commands and parameters in the command-line utility, type this at the command prompt:

CvCollectionCmd /?CvCollectionCmd /?

OpzioneOption DescriptionDescription ParametriParameters Valori restituitiReturn values
QueryQuery Indica se è possibile avviare la raccolta.Returns whether collection can be started. nessunoNone 0 se la raccolta è pronta per l'avvio.0 if collection is ready to start.

1 se è già in corso una raccolta.1 if collection is already in progress.

2 se non è in corso alcuna raccolta, ma sono già state abilitate una o più delle sessioni ETW necessarie.2 if collection isn't in progress, but one or more of the required ETW sessions is already enabled.
LaunchLaunch Esegue il processo specificato nel Visualizzatore di concorrenza.Runs the specified process under the Concurrency Visualizer. Percorso del file eseguibile.The path of the executable. 0 se l'esecuzione è riuscita.0 if the run succeeded.

1 se l'esecuzione non è riuscita poiché non è stato possibile avviare l'applicazione di destinazione.1 if the run failed because the target application couldn't be started.

13 se l'esecuzione non è riuscita poiché CVCollectionCmd non ha autorizzazioni sufficienti per scrivere nella directory di output specificata.13 if the run failed because CVCollectionCmd has insufficient permissions to write to the specified output directory.
AttachAttach Inizia la raccolta di una traccia a livello di sistema. In caso contrario, si connette a un processo, se ne è stato specificato uno.Begins collecting a system-wide trace; otherwise, attaches to a process if one is specified. Nessuno.None. 0 se la connessione è riuscita.0 if attachment succeeded.

1 se la connessione non è riuscita poiché il processo specificato non è valido o è ambiguo.1 if attachment failed because the specified process is invalid or ambiguous.

13 se la connessione non è riuscita poiché CVCollectionCmd non ha autorizzazioni sufficienti per scrivere nella directory di output specificata.13 if the attachment failed because CVCollectionCmd has insufficient permissions to write to the specified output directory.
DetachDetach Arresta la raccolta.Stops collection. Nessuno.None. 0 se la disconnessione è riuscita.0 if detachment succeeded.

1 se la disconnessione non è riuscita poiché la raccolta non è attualmente in corso.1 if detachment failed because collection is not currently in progress.

2 se la disconnessione non è riuscita poiché non è stato possibile arrestarla.2 if detachment failed because collection could not be stopped.
AnalyzeAnalyze Analizza la traccia specificata.Analyzes the specified trace. Percorso completo del file CVTrace.The full path of the CVTrace file. 0 se l'analisi è riuscita.0 if analysis succeeded.

1 se non è possibile avviare l'analisi poiché la traccia specificata è a livello di sistema, ma non è stato specificato alcun processo di destinazione.1 if analysis cannot start because the specified trace was system-wide, but no target process was specified.

2 se non è possibile avviare l'analisi poiché la traccia specificata non è a livello di sistema ed è stato specificato un processo.2 if analysis cannot start because the trace was not system-wide and a process was specified.

3 se l'analisi non è riuscita poiché il processo specificato non è valido.3 if analysis failed because the specified process is invalid.

4 se l'analisi non è riuscita poiché il file CVTrace specificato non è valido.4 if analysis failed because the specified CVTrace file is invalid.
LaunchArgsLaunchArgs Specifica gli argomenti eseguibili di destinazione.Specifies the target executable arguments. Questa opzione è applicabile solo al comando Launch.This option applies to the Launch command only. Argomenti da riga di comando per l'applicazione.The command-line arguments to the application. Nessuno.None.
OutdirOutdir Specifica la directory in cui salvare i file di traccia.Specifies the directory in which to save trace files. Applicabile ai comandi Launch e Attach.Applies to the Launch and Attach commands. Percorso di directory o percorso relativo.A directory path or relative path. Nessuno.None.
ProcessProcess Specifica il processo a cui connettersi quando si esegue il comando Attach o il processo in una traccia da analizzare quando si esegue il comando Analyze.Specifies the process to attach to when the Attach command is executed, or the process in a trace to analyze when the Analyze command is executed. Applicabile ai comandi Attach e Analyze.Applies to the Attach and Analyze commands. PID o nome del processo.The PID or the name of the process. Nessuno.None.
ConfigConfig Specifica il percorso del file di configurazione, se si vogliono impostazioni di raccolta diverse da quelle predefinite.Specifies the path of the configuration file, if you want collection settings other than the defaults. Applicabile ai comandi Launch, Attach e Analyze.Applies to the Launch, Attach, and Analyze commands. Percorso di directory o percorso relativo del file di configurazione XML.The directory path or relative path of the XML configuration file. Nessuno.None.

Personalizzare le impostazioni di configurazioneCustomize configuration settings

Se si usa CVCollectionCmd per raccogliere tracce e si vogliono personalizzare le impostazioni di raccolta, usare un file di configurazione per specificarle.If you use CVCollectionCmd to collect traces and you want to customize the collection settings, then use a configuration file to specify them.

Note

Quando si usa Visual Studio per raccogliere le tracce, è necessario non modificare direttamente il file di configurazione.When you use Visual Studio to collect traces, don't directly modify the configuration file. Per modificare le impostazioni, usare invece la finestra di dialogo Impostazioni avanzate .Instead, use the Advanced Settings dialog box to modify settings.

Per modificare le impostazioni di raccolta, creare un file di configurazione nella macchina in cui sarà eseguita l'utilità CVCollectionCmd.To modify collection settings, create a configuration file on the machine where you will run the CVCollectionCmd utility. È possibile creare un file di configurazione completamente nuovo oppure copiare il file di configurazione disponibile nel computer in cui è installato Visual Studio e modificarlo.You can create the configuration file from scratch, or you can copy the configuration file on the computer that has Visual Studio installed and modify that. Il nome del file è UserConfig.xml e il file si trova nella cartella Local AppData.The file is named UserConfig.xml and is located in the Local AppData folder. Quando si esegue l'utilità, usare l'opzione Config insieme al comando Launch, Attach o Analyze.When you run the utility, use the Config option in conjunction with the Launch, Attach, or Analyze command. Specificare il percorso del file di configurazione nel parametro associato all'opzione Config.In the parameter that's associated with the Config option, specify the path of the configuration file.

Tag del file di configurazioneConfiguration file tags

Il file di configurazione è basato su XML.The configuration file is XML-based. Di seguito sono riportati i tag e i valori validi:Here are the valid tags and values:

TagTag DescriptionDescription ValoriValues
ConfigConfig Delimita il file di configurazione complessivo.Demarcates the overall config file. Deve contenere gli elementi seguenti:Must contain these elements:

- MinorVersion- MinorVersion
- MajorVersion- MajorVersion
MajorVersionMajorVersion Specifica la versione principale del file di configurazione.Specifies the major version of the config file. Deve essere 1 per progetti Visual Studio 2012Visual Studio 2012 .Must be 1 for Visual Studio 2012Visual Studio 2012 projects. Se è diverso da 1, l'utilità non funzionerà.If not 1, the utility will not work.
MinorVersionMinorVersion Specifica la versione secondaria del file di configurazione.Specifies the minor version of the config file. Deve essere 0 per progetti Visual Studio 2012Visual Studio 2012 .Must be 0 for Visual Studio 2012Visual Studio 2012 projects. Se è diverso da 0, l'utilità non funzionerà.If not 0, the utility will not work.
IncludeEnvSymbolPathIncludeEnvSymbolPath Imposta un valore che determina se è usato il percorso simboli di ambiente (_NT_SYMBOL_PATH).Sets a value that determines whether the environment symbol path (_NT_SYMBOL_PATH) is used. - True- True
- False- False
DeleteEtlsAfterAnalysisDeleteEtlsAfterAnalysis Imposta un valore che determina se i file ETL sono eliminati dopo il completamento dell'analisi.Sets a value that determines whether the ETL files are deleted when analysis completes. - True- True
- False- False
SymbolPathSymbolPath Specifica il percorso del server di simboli.Specifies the path of the symbol server. Per altre informazioni, vedere Usare il server di simboli Microsoft per ottenere il file di simboli di debug.For more information, see Use the Microsoft Symbol Server to obtain debug symbol files. Nome di directory o URL.A directory name or URL.
MarkersMarkers Include l'elenco di provider marcatori.Contains the list of marker providers. Può includere zero o più elementi MarkerProvider.May contain zero or more MarkerProvider elements.
MarkerProviderMarkerProvider Specifica un singolo provider marcatori.Specifies a single marker provider. Deve contenere gli elementi seguenti:Must contain these elements:

- Level- Level
- GUID- GUID
- Name- Name

Può includere questi elementi:Can contain these elements:

- Categories- Categories
- IsEnabled- IsEnabled
LivelloLevel Imposta il livello di importanza di un MarkerProvider.Sets the importance level of a MarkerProvider. - Basso- Low
- Normale- Normal
- Alto- High
- Critico- Critical
- Tutto- Everything
GUIDGuid Identificatore univoco globale del provider marcatori ETW.The globally unique identifier of the ETW marker provider. Un valore GUID.A GUID.
nomeName Specifica la descrizione del provider marcatori.Specifies the description of the marker provider. Stringa.A string.
CategoriesCategories Specifica le categorie raccolte per il provider marcatori.Specifies the categories collected for the marker provider. Stringa delimitata da virgole che include numeri o intervalli di numeri.A comma-delimited string of numbers or ranges of numbers.
IsEnabledIsEnabled Imposta un valore che determina se il provider marcatori è abilitato per la raccolta.Sets a value that determines whether the marker provider is enabled for collection. - True- True
- False- False
FilterConfigFilterConfig Specifica l'elenco di opzioni di configurazione degli eventi ETW filtrati dalla raccolta.Specifies the list of configuration options of the ETW events that are filtered from collection. Può includere gli elementi seguenti:May contain these elements:

- CollectClrEvents- CollectClrEvents
- ClrCollectionOptions- ClrCollectionOptions
- CollectSampleEvents- CollectSampleEvents
- CollectGpuEvents- CollectGpuEvents
- CollectFileIO- CollectFileIO
CollectClrEventsCollectClrEvents Imposta un valore che determina se gli eventi CLR sono raccolti.Set a value that determines whether CLR events are collected. - True- True
- False- False
ClrCollectionOptionsClrCollectionOptions Specifica se raccogliere eventi CLR per app native e se raccogliere eventi di rundown NGEN.Specifies whether to collect CLR events for native apps, and whether to collect NGEN rundown events. Può includere uno, entrambi o nessuno dei valori seguenti:May contain one, both, or none of these values:

- CollectForNative- CollectForNative
- DisableNGenRundown- DisableNGenRundown
CollectSampleEventsCollectSampleEvents Imposta un valore che determina se gli eventi campione sono raccolti.Sets a value that determines whether sample events are collected. - True- True
- False- False
CollectGpuEventsCollectGpuEvents Imposta un valore che determina se gli eventi generati da DX sono raccolti.Sets a value that determines whether the events generated by DX are collected. - True- True
- False- False
CollectFileIOCollectFileIO Imposta un valore che determina se gli eventi I/O su file sono raccolti.Sets a value that determines whether file I/O events are collected. - True- True
- False- False
UserBufferSettingsUserBufferSettings Specifica l'elenco di parametri per impostazioni di buffer utente.Specifies the list of user buffer-settings parameters. Deve contenere gli elementi seguenti:Must contain these elements:

- BufferFlushTimer- BufferFlushTimer
- BufferSize- BufferSize
- MinimumBuffers- MinimumBuffers
- MaximumBuffers- MaximumBuffers
KernelBufferSettingsKernelBufferSettings Specifica l'elenco di parametri per impostazioni di buffer kernel.Specifies the list of kernel buffer-settings parameters. Deve contenere gli elementi seguenti:Must contain these elements:

- BufferFlushTimer- BufferFlushTimer
- BufferSize- BufferSize
- MinimumBuffers- MinimumBuffers
- MaximumBuffers- MaximumBuffers
BufferFlushTimerBufferFlushTimer Specifica il timer di cancellazione dei buffer ETW.Specifies the flush timer of the ETW buffers. Un numero intero positivo.A positive integer.
BufferSizeBufferSize Quantità di memoria allocata per ogni buffer di sessione di traccia di eventi, espressa in kilobyte.Amount of memory that's allocated for each event-tracing session buffer, in kilobytes. Un numero compreso tra 0 e 1024.A number from 0 to 1024.
MinimumBuffersMinimumBuffers Il numero minimo di buffer allocati per il pool di buffer della sessione di traccia degli eventi.The minimum number of buffers that are allocated for the buffer pool of the event-tracing session. Un numero intero positivo maggiore di o uguale al doppio del numero di core logici.A positive integer greater than or equal to twice the number of logical cores.
MaximumBuffersMaximumBuffers Numero massimo di buffer allocati per il pool di buffer della sessione di traccia degli eventi.Maximum number of buffers that are allocated for the buffer pool of the event-tracing session. Un numero maggiore di o uguale a MinimumBuffers.A number greater than or equal to MinimumBuffers.
JustMyCodeJustMyCode Specifica l'elenco di directory Just My Code.Specifies the list of Just My Code directories. Un elenco di zero o più elementi MyCodeDirectory.A list of zero or more MyCodeDirectory elements.
MyCodeDirectoryMyCodeDirectory Specifica una directory che include il codice dell'utente.Specifies a directory that contains your code. Un percorso assoluto.An absolute path.

EsempioExample

Invece di creare un file di configurazione completamente nuovo, è possibile copiare l'esempio seguente e quindi modificarlo in base alle proprie esigenze.Instead of creating a configuration file from the beginning, you can copy the following example and then modify it to meet your requirements.

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