Condividi tramite


Utilità da riga di comando di Concurrency Visualizer (CVCollectionCmd)

È possibile usare l'utilità della riga di comando del visualizzatore di concorrenza (CVCollectionCmd.exe) per raccogliere tracce dalla riga di comando in modo che sia possibile visualizzarle nel visualizzatore di concorrenza per Visual Studio. Gli strumenti possono essere usati nei computer in cui non è installato Visual Studio.

Annotazioni

Il visualizzatore di concorrenza è un'estensione facoltativa. In precedenza era stato incluso in Visual Studio. È possibile scaricare gli strumenti di raccolta del visualizzatore di concorrenza per Visual Studio dall'Area download.

Scarica l'utilità della riga di comando del visualizzatore di concorrenza

Per scaricare e installare l'utility da riga di comando, vai a Concurrency Visualizer Collection Tools per Visual Studio e segui le istruzioni. Per impostazione predefinita, CVCollectionCmd.exe viene installato in %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ nei computer x64).

Raccogliere una traccia con CVCollectionCmd

È possibile raccogliere una traccia avviando l'app con CVCollectionCmd o collegandola. Per le opzioni, vedere le informazioni di riferimento sui comandi seguenti. Ad esempio:

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

Comandi e parametri

Per ottenere informazioni sui comandi e i parametri nell'utilità della riga di comando, digitare quanto segue al prompt dei comandi:

CvCollectionCmd /?

Opzione Description Parametri Valori restituiti
Query Restituisce un valore che indica se è possibile avviare la raccolta. None 0 se la raccolta è pronta per l'avvio.

1 se la raccolta è già in corso.

2 se la raccolta non è in corso, ma è già abilitata una o più sessioni ETW necessarie.
Launch Esegue il processo specificato nel visualizzatore di concorrenza. Percorso del file eseguibile. 0 se l'esecuzione ha avuto esito positivo.

1 se l'esecuzione non è riuscita perché non è stato possibile avviare l'applicazione di destinazione.

13 se l'esecuzione non è riuscita perché CVCollectionCmd non dispone di autorizzazioni sufficienti per scrivere nella directory di output specificata.
Attach Inizia a raccogliere una traccia a livello di sistema; in caso contrario, si collega a un processo se ne viene specificato uno. Nessuno. 0 se il collegamento è riuscito.

1 se l'allegato non è riuscito perché il processo specificato non è valido o ambiguo.

13 se l'allegato non è riuscito perché CVCollectionCmd non dispone di autorizzazioni sufficienti per scrivere nella directory di output specificata.
Detach Arresta la raccolta. Nessuno. 0 se lo scollegamento è riuscito.

1 se lo scollegamento non è riuscito perché la raccolta non è attualmente in corso.

2 se il distacco non è riuscito perché non è stato possibile fermare la raccolta.
Analizzare Analizza la traccia specificata. Percorso completo del file CVTrace. 0 se l'analisi ha avuto esito positivo.

1 se l'analisi non può essere avviata perché la traccia specificata era a livello di sistema, ma non è stato specificato alcun processo di destinazione.

2 se l'analisi non può essere avviata perché la traccia non era a livello di sistema ed è stato specificato un processo.

3 se l'analisi non è riuscita perché il processo specificato non è valido.

4 se l'analisi non è riuscita perché il file CVTrace specificato non è valido.
LaunchArgs Specifica gli argomenti eseguibili di destinazione. Questa opzione si applica solo al comando Launch. Argomenti della riga di comando dell'applicazione. Nessuno.
Outdir Specifica la directory in cui salvare i file di traccia. Si applica ai comandi Launch e Attach. Percorso di directory o percorso relativo. Nessuno.
Processo Specifica il processo a cui connettersi quando viene eseguito il comando Attach o il processo in una traccia da analizzare quando viene eseguito il comando Analyze. Si applica ai comandi Allega e Analizza. PID o il nome del processo. Nessuno.
Config Specifica il percorso del file di configurazione, se si desidera impostare impostazioni di raccolta diverse dalle impostazioni predefinite. Si applica ai comandi Launch, Attach e Analyze. Percorso della directory o percorso relativo del file di configurazione XML. Nessuno.

Personalizzare le impostazioni di configurazione

Se si usa CVCollectionCmd per raccogliere tracce e si desidera personalizzare le impostazioni della raccolta, usare un file di configurazione per specificarli.

Annotazioni

Quando si usa Visual Studio per raccogliere tracce, non modificare direttamente il file di configurazione. Usare invece la finestra di dialogo Impostazioni avanzate per modificare le impostazioni.

Per modificare le impostazioni della raccolta, creare un file di configurazione nel computer in cui si eseguirà l'utilità CVCollectionCmd. È possibile creare il file di configurazione da zero oppure copiare il file di configurazione nel computer in cui è installato Visual Studio e modificarlo. Il file è denominato UserConfig.xml e si trova nella cartella AppData locale . Quando si esegue l'utilità, usare l'opzione Config insieme al comando Launch, Attach o Analyze. Nel parametro associato all'opzione Config specificare il percorso del file di configurazione.

Tag dei file di configurazione

Il file di configurazione è basato su XML. Ecco i tag e i valori validi:

Tag Description Valori
Config Demarca il file di configurazione complessivo. Deve contenere questi elementi:

- Versione Minore
- MajorVersion
Versione principale Specifica la versione principale del file di configurazione. Deve essere 1 per la maggior parte dei progetti di Visual Studio. Se non è 1, l'utilità non funzionerà.
Versione Minore Specifica la versione secondaria del file di configurazione. Deve essere 0 per la maggior parte dei progetti di Visual Studio. Se non è 0, l'utilità non funzionerà.
IncludeEnvSymbolPath Imposta un valore che determina se il percorso del simbolo dell'ambiente (_NT_SYMBOL_PATH) viene utilizzato. -Vero
-Falso
EliminaEtlDopoAnalisi Imposta un valore che determina se i file ETL vengono eliminati al termine dell'analisi. -Vero
-Falso
SymbolPath Specifica il percorso del server dei simboli. Per altre informazioni, vedere Usare il server dei simboli Microsoft per ottenere i file di simboli di debug. Nome o URL della directory.
Marcatori Contiene l'elenco dei fornitori di marcatori. Può contenere zero o più elementi MarkerProvider.
MarkerProvider Specifica un singolo provider di marcatori. Deve contenere questi elementi:

-Livello
-GUID
- Nome

Può contenere questi elementi:

- Categorie
- IsEnabled
Level Imposta il livello di importanza di un MarkerProvider. - Basso
-Normale
-Alto
-Critico
-Tutto
Guid L'identificativo univoco globale del provider di marcatori ETW. Un GUID.
Nome Specifica la descrizione del provider di marcatori. Stringa .
Categorie Specifica le categorie raccolte per il provider di marker. Stringa delimitata da virgole di numeri o intervalli di numeri.
È Abilitato Imposta un valore che determina se il provider di marcatori è abilitato per la raccolta. -Vero
-Falso
FilterConfig Specifica l'elenco delle opzioni di configurazione degli eventi ETW filtrati dalla raccolta. Può contenere questi elementi:

- CollectClrEvents
- ClrCollectionOptions
- CollectSampleEvents
- CollectGpuEvents
- CollectFileIO
CollectClrEvents Impostare un valore che determina se vengono raccolti eventi CLR. -Vero
-Falso
ClrCollectionOptions Specifica se raccogliere eventi CLR per le app native e se raccogliere eventi di rundown di NGEN. Può contenere uno, entrambi o nessuno di questi valori:

- CollectForNative
- DisableNGenRundown
RaccogliEventiDiEsempio Imposta un valore che determina se vengono raccolti eventi di esempio. -Vero
-Falso
CollectGpuEvents Imposta un valore che determina se vengono raccolti gli eventi generati da DX. -Vero
-Falso
CollectFileIO Imposta un valore che determina se gli eventi di I/O dei file vengono raccolti. -Vero
-Falso
UserBufferSettings Specifica l'elenco dei parametri delle impostazioni del buffer utente. Deve contenere questi elementi:

- BufferFlushTimer
- BufferSize
- MinimumBuffers
- MaximumBuffers
ImpostazioniBufferKernel Specifica l'elenco dei parametri delle impostazioni del buffer del kernel. Deve contenere questi elementi:

- BufferFlushTimer
- BufferSize
- MinimumBuffers
- MaximumBuffers
BufferFlushTimer Specifica il timer di scaricamento dei buffer ETW. Numero intero positivo.
Dimensione del Buffer (BufferSize) Quantità di memoria allocata per ogni buffer della sessione di traccia eventi, in kilobyte. Numero compreso tra 0 e 1024.
MinimumBuffers Numero minimo di buffer allocati per il pool di buffer della sessione di tracciamento eventi. Numero intero positivo maggiore o uguale al doppio del numero di core logici.
MaximumBuffers Numero massimo di buffer allocati per il pool della sessione di tracciamento degli eventi. Numero maggiore o uguale a MinimumBuffers.
JustMyCode Specifica l'elenco delle directory Just My Code. Elenco di zero o più elementi MyCodeDirectory.
MyCodeDirectory Specifica una directory contenente il codice. Percorso assoluto.

Example

Invece di creare un file di configurazione dall'inizio, è possibile copiare l'esempio seguente e modificarlo per soddisfare i requisiti.

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