Utilità della riga di comando del visualizzatore di concorrenza (CVCollectionCmd)
Si possono utilizzare le utilità della riga di comando del Visualizzatore di concorrenza (CVCollectionCmd.exe) per raccogliere ed esaminare le traccie sulle macchine che non hanno Visual Studio.È possibile aprire le traccie raccolte in un computer che ha Visual Studio in modo che sia possibile visualizzarle automaticamente nel Visualizzatore di concorrenza.
Installazione e Distribuzione dell'Utilità
Per installare da un DVD di Visual Studio
Nel DVD, individuare la cartella nel livello più alto denominata "Concurrency Visualizer".
In questa cartella, eseguire concvi_standalonecollection.exe.
Per installare da un File di Installazione Web di Visual Studio
Individuare il file di installazione scaricato.Il nome del file dipende dalla versione di Visual Studio che è stata scaricata.
Aprire una finestra del prompt dei comandi e spostarsi nella directory in cui si trova il file di installazione.
Eseguire il comando <install file>/layout, dove install file è il nome del file scaricato.Il comando di layout crea una cartella denominata "Concurrency Visualizer".
Nella cartella "Concurrency Visualizer", eseguire concvi_standalonecollection.exe.
Per distribuire su un computer che non dispone di Visual Studio
Individuare concvi_standalonecollection.exe su un computer in cui è installato Visual Studio.(Vedere le due procedure precedenti).
Copiare concvi_standalonecollection.exe nel computer che non dispone di Visual Studio.
Eseguire concvi_standalonecollection.exe.
Comandi e parametri
È possibile ottenere informazioni su questi comandi e parametri tramite:
CvCollectionCmd /?
Opzione |
Descrizione |
Parametri |
Valori restituiti |
---|---|---|---|
Query |
Ritorna se la raccolta può essere avviata. |
Nessuno |
0 se la raccolta è pronta per essere avviata. 1 se la raccolta è già in corso. 2 se la raccolta non è in corso, ma uno o più delle sessioni ETW richieste sono già abilitate. |
Avvio |
Viene eseguito il processo specificato con il Visualizzatore di concorrenza. |
Percorso dell'eseguibile. |
0 se l'esecuzione ha esito positivo. 1 se l'esecuzione non è riuscita perché l'applicazione di destinazione non può essere avviata. 13 se l'esecuzione è fallita perché CVCollectionCmd non dispone di autorizzazioni sufficienti per scrivere nella directory di output specificata. |
Connetti |
Avviare la raccolta di traccie a livello di sistema; in caso contrario, connetterla ad un processo eventualmente specificato. |
Nessuno. |
0 se la connessione ha avuto successo. 1 se la connessione non è riuscita perché il processo specificato non è valido o ambiguo. 13 se la connessione è fallita perché CVCollectionCmd non dispone di autorizzazioni sufficienti per scrivere nella directory di output specificata. |
Disconnetti |
Arresta la raccolta. |
Nessuno. |
0 se la disconnessione ha avuto esito positivo. 1 se la disconnessione ha avuto esito negativo perché la raccolta non è attualmente in corso. 2 se la disconnessione ha avuto esito negativo perché la raccolta non può essere interrotta. |
Analizza |
Analizza la traccia specificata. |
Il percorso completo del file CVTrace. |
0 se l'analisi ha avuto esito positivo. 1 se l'analisi non è potuta iniziare perché la traccia specificata è a livello di sistema, ma nessun processo di destinazione è stato specificato. 2 se l'analisi non può iniziare perché la traccia non era a livello di sistema e un processo è stato specificato. 3 se l'analisi ha esito negativo perché il processo specificato non è valido. 4 se l'analisi ha esito negativo perché il file specificato di CVTrace non è valido. |
LaunchArgs |
Specifica gli argomenti dell'eseguibile di destinazione.Questa opzione si applica solamente al comando d'avvio. |
Argomenti della riga di comando per l'applicazione. |
Nessuno. |
Outdir |
Specifica la directory in cui salvare i file di traccia.Si applica ai comandi di connessione e di avvio. |
Un percorso della directory o il percorso relativo. |
Nessuno. |
Processo |
Specifica il processo a cui connettersi quando il comando di connessione viene eseguito, o il processo in una traccia da analizzare quando il comando di analisi viene eseguito.Si applica ai comandi di connessione e di analisi. |
Il PID oppure il nome del processo. |
Nessuno. |
Configurazione |
Specifica il percorso del file di configurazione, se si desidera utilizzare impostazioni di raccolta diverse da quelle predefinite.Si applica ai comandi di avvio, di connessione e di analisi. |
Il percorso della directory o il percorso relativo del file di configurazione XML. |
Nessuno. |
Personalizzazione delle impostazioni di configurazione
Se si utilizza CVCollectionCmd per la raccolta di tracce e se si desidera personalizzare le impostazioni di raccolta, utilizzare un file di configurazione per specificarle.
[!NOTA]
Quando si utilizza Visual Studio per raccogliere le tracce, non modificare direttamente il file di configurazione.In alternativa, utilizzare la finestra di dialogo Impostazioni avanzate per modificare le impostazioni.
Per modificare le impostazioni di raccolta, creare un file di configurazione nel computer in cui si eseguiranno le utilità di CVCollectionCmd.È possibile creare il file di configurazione da zero, o copiare il file di configurazione nel computer in cui è installato Visual Studio e modificarlo.Il file è denominato UserConfig.xml e si trova nella cartella Local AppData.Quando si eseguono le utilità, utilizzare l'opzione di configurazione in combinazione con il comando di avvio, di connessione o di analisi.Nel parametro associato all'opzione di configurazione, specificare il percorso del file di configurazione.
Tag del File di configurazione
Il file di configurazione è basato su XML.Di seguito sono riportati i tag validi e i valori:
Tag |
Descrizione |
Valori |
---|---|---|
Configurazione |
Delimita il file di configurazione globale. |
Deve contenere questi elementi:
|
MajorVersion |
Specifica la versione principale del file di configurazione. |
Deve essere 1 per i progetti Visual Studio 2012.Se non è 1, l'utilità non funzionerà. |
MinorVersion |
Specifica la versione secondaria del file di configurazione. |
Deve essere 0 per i progetti Visual Studio 2012.Se non è 0, l'utilità non funzionerà. |
IncludeEnvSymbolPath |
Imposta un valore che determina se il percorso dei simboli di ambiente (_NT_SYMBOL_PATH) è utilizzato. |
|
DeleteEtlsAfterAnalysis |
Imposta un valore che determina se i file di ETL verranno eliminati quando l'analisi verrà completata. |
|
SymbolPath |
Specifica il percorso del server di simboli.Per ulteriori informazioni, vedere Utilizzare il Server di Simboli di Microsoft per ottenere i file di simboli del debug. |
Un nome di directory o un URL. |
Markers |
Contiene l'elenco dei provider di marcatori. |
Può contenere zero o più elementi MarkerProvider. |
MarkerProvider |
Specifica un solo provider di marcatori. |
Deve contenere questi elementi:
Può contenere questi elementi:
|
Livello |
Imposta il livello di importanza di un MarkerProvider. |
|
Guid |
Identificatore 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 marcatori. |
Stringa delimitata da virgole di numeri o intervalli di numeri. |
IsEnabled |
Imposta un valore che determina se il provider di marcatori è stato attivato per la raccolta. |
|
FilterConfig |
Specifica l'elenco delle opzioni di configurazione degli eventi ETW che vengono filtrati dalla raccolta. |
Può contenere questi elementi:
|
CollectClrEvents |
Imposta un valore che determina se vengono raccolti gli eventi CLR. |
|
ClrCollectionOptions |
Specifica se si desidera raccogliere gli eventi CLR per le applicazioni native e se si desidera raccogliere gli eventi rundown NGEN. |
Può contenere uno, entrambi, o nessuno dei valori seguenti:
|
CollectSampleEvents |
Imposta un valore che determina se gli eventi di esempio vengono raccolti. |
|
CollectGpuEvents |
Imposta un valore che determina se gli eventi generati da DX vengono raccolti. |
|
CollectFileIO |
Imposta un valore che determina se vengono raccolti gli eventi di I/O dei file. |
|
UserBufferSettings |
Specifica l'elenco dei parametri di impostazione del buffer dell'utente. |
Deve contenere questi elementi:
|
KernelBufferSettings |
Specifica l'elenco dei parametri di impostazione del buffer del kernel. |
Deve contenere questi elementi:
|
BufferFlushTimer |
Specifica il timer di cancellazione dei buffer ETW. |
Integer positivo |
BufferSize |
Quantità di memoria allocata per ciascun buffer della sessione di traccia degli eventi, in kilobyte. |
Un numero compreso tra 0 e 1024. |
MinimumBuffers |
Il numero minimo dei buffer allocati per il pool di buffer della sessione di traccia degli eventi. |
Un numero intero positivo maggiore o uguale a due volte il numero dei core logici. |
MaximumBuffers |
Il numero massimo dei buffer allocati per il pool di buffer della sessione di traccia degli eventi. |
Un numero maggiore o uguale a MinimumBuffers. |
JustMyCode |
Specifica l'elenco delle directory Just My Code. |
Un elenco di zero o più elementi MyCodeDirectory. |
MyCodeDirectory |
Specifica una directory che contiene il codice. |
Un percorso assoluto. |
Esempio
Anziché creare un file di configurazione all'inizio, è possibile copiare l'esempio seguente e modificarlo per soddisfare le proprie esigenze.
<?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>