Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È 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>