Utilitaire de ligne de commande du visualiseur concurrentiel (CVCollectionCmd)
Vous pouvez utiliser l'utilitaire de ligne de commande du visualiseur concurrentiel (CVCollectionCmd.exe) pour traiter les traces sur les machines qui n'ont pas Visual Studio.Vous pouvez ouvrir des traces collectées sur un ordinateur qui a Visual Studio afin de pouvoir les afficher dans le visualiseur d'accès concurrentiel.
Installation et déploiement de l'utilitaire
Pour installer à partir d'un DVD Visual Studio
Sur le DVD, recherchez le dossier de niveau supérieur nommé « Visualiseur d'accès concurrentiel ».
Dans ce dossier, exécutez concvi_standalonecollection.exe.
Pour installer à partir d'un fichier d'installation Web de Visual Studio
Localisez le fichier d'installation que vous avez téléchargé.Le nom du fichier dépend de la version de Visual Studio que vous avez téléchargé.
Ouvrez une fenêtre d'invite de commandes et accédez au répertoire où se trouve le fichier d'installation.
Exécutez la commande <install file>/layout, où install file est le nom du fichier que vous avez téléchargé.L'ordre de disposition crée un dossier nommé « visualiseur concurrentiel. »
Dans le dossier « visualiseur concurrentiel », exécutez concvi_standalonecollection.exe.
Pour déployer sur un ordinateur qui ne dispose pas de Visual Studio
Recherchez concvi_standalonecollection.exe sur un ordinateur qui a Visual Studio.(Voir les deux procédures précédentes).
Copiez concvi_standalonecollection.exe sur l'ordinateur qui n'a pas Visual Studio.
Exécutez concvi_standalonecollection.exe.
Commandes et paramètres
Vous pouvez obtenir de l'aide sur les commandes et paramètres à l'aide de :
CvCollectionCmd /?
Option |
Description |
Paramètres |
Valeurs retournées |
---|---|---|---|
Requête |
Retourne si la collection peut être démarrée. |
Aucun |
0 si la collection est prête à démarrer. 1 si la collection est déjà en cours. 2 si la collection n'est pas en cours, mais une ou plusieurs sessions ETW requises sont déjà activées. |
Lancer |
Exécute le processus spécifié sous le visualiseur d'accès concurrentiel. |
Chemin d'accès de l'exécutable. |
0 si l'exécution a réussi. 1 si l'exécution a échoué car l'application cible n'a pas pu être démarrée. 13 si l'exécution a échoué car CVCollectionCmd n'a pas d'autorisations suffisantes pour écrire dans le répertoire de sortie spécifié. |
Attacher |
Commence à collecter une trace à l'échelle du système ; sinon, attache un processus s'il est spécifié. |
Aucun |
0 si la connexion a réussi. 1 si la connexion a échoué car le processus spécifié est incorrect ou ambigu. 13 si la connexion a échoué car CVCollectionCmd a des autorisations insuffisantes d'écriture dans le répertoire de sortie spécifié. |
Détacher |
Arrête la collecte. |
Aucun |
0 si le détachement a réussi. 1 si le détachement a échoué parce que la collection n'est pas en cours. 2 si le détachement a échoué parce que la collection n'a pas pu être arrêtée. |
Analyze |
Analyse de la trace spécifiée. |
Le chemin d'accès complet du fichier CVTrace. |
0 si l'analyse a réussi. 1 si l'analyse ne peut pas démarrer car la trace spécifiée est à l'échelle du système, mais aucun processus cible n'a été spécifié. 2 si l'analyse ne peut pas démarrer car la trace n'était pas à l'échelle du système et un processus a été spécifié. 3 si l'analyse a échoué car le processus spécifié n'est pas valide. 4 si l'analyse a échoué parce que le fichier spécifié CVTrace est incorrect. |
LaunchArgs |
Spécifie les arguments exécutable cible.Cette option s'applique à la commande de démarrage uniquement. |
Spécifie les arguments de la ligne de commande à l'application. |
Aucun |
Outdir |
Spécifie le répertoire dans lequel enregistrer les fichiers de trace.S'applique aux commandes de lancement et commandes d'attache. |
Un chemin d'accès du répertoire ou un chemin relatif. |
Aucun |
Processus |
Spécifie le processus pour attacher lorsque la commande d'ancrage est exécutée, ou le processus dans une trace pour analyser lorsque la commande d'analyse est exécutée.S'applique aux commandes d'ancrage et d'analyse. |
Le PID ou le nom du processus. |
Aucun |
Config |
Spécifie le chemin d'accès du fichier de configuration, si vous souhaitez que les paramètres de collection plutôt que les valeurs par défaut.S'applique aux commandes de lancement, d'ancrage et d'analyse. |
Le chemin du répertoire ou le chemin d'accès relatif du fichier de configuration XML. |
Aucun |
Personnalisation des paramètres de configuration
Si vous utilisez CVCollectionCmd pour collecter des traces et que vous souhaitez personnaliser les paramètres de collection, alors utilisez un fichier de configuration pour les spécifier.
[!REMARQUE]
Lorsque vous utilisez Visual Studio pour collecter des traces, ne modifiez pas directement le fichier de configuration.Au lieu de cela, utilisez la boite de dialogue Paramètres avancés pour modifier les paramètres.
Pour modifier les paramètres de la collection, créez un fichier de configuration sur l'ordinateur où vous exécutez l'utilitaire CVCollectionCmd.Vous pouvez créer le fichier de configuration à partir de zéro, ou vous pouvez copier le fichier de configuration de l'ordinateur sur lequel Visual Studio est installé et le modifier.Le fichier est nommé UserConfig.xml et se trouve dans le répertoire Locaux AppData .Lorsque vous exécutez l'utilitaire, utilisez l'option de configuration avec le lancement, l'ancrage, ou la commande d'analyse .Dans le paramètre associé à l'option de configuration, spécifiez le chemin d'accès du fichier de configuration.
Balises de fichiers de configuration
Le fichier de configuration est basé sur XML.Voici les balises et des valeurs valides :
Tag |
Description |
Valeurs |
---|---|---|
Config |
Délimite le fichier de configuration globale. |
Doit contenir ces éléments :
|
MajorVersion |
Spécifie la version principale du fichier de configuration. |
Doit avoir la valeur 1 pour les projets Visual Studio 2012 .Si ce n'est pas 1, l'utilitaire ne fonctionne pas. |
MinorVersion |
Spécifie la version secondaire du fichier de configuration. |
Doit être 0 pour les projets Visual Studio 2012.Si ce n'est pas 0, l'utilitaire ne fonctonnera pas. |
IncludeEnvSymbolPath |
Définit une valeur qui détermine si le chemin d'accès aux symboles d'environnement (_NT_SYMBOL_PATH) est utilisé. |
|
DeleteEtlsAfterAnalysis |
Définit une valeur qui détermine si les fichiers ETL sont supprimés lorsque l'analyse se termine. |
|
SymbolPath |
Spécifie le chemin d'accès au serveur de symboles.Pour plus d'informations, consultez Utilisez le serveur de symboles Microsoft pour obtenir des fichiers de symbolesde debug. |
Un nom de répertoire ou une URL. |
Markers |
Contient la liste des fournisseurs de jeton. |
Peut contenir zéro ou plusieurs éléments MarkerProvider. |
MarkerProvider |
Spécifie un fournisseur unique de jeton. |
Doit contenir ces éléments :
Peut contenir ces éléments :
|
Niveau |
Définit le niveau d'importance d'un MarkerProvider. |
|
Guid |
L'identificateur global unique du fournisseur de jeton ETW. |
GUID. |
Name |
Spécifie la description du fournisseur du marqueur. |
une chaîne ; |
Catégories |
Spécifie les catégories collectées pour le fournisseur de jeton. |
Une suite de nombres délimités par des virgules ou intervalles de nombres. |
IsEnabled |
Définit une valeur qui détermine si le fournisseur de jeton est activé pour la collection. |
|
FilterConfig |
Spécifie la liste des options de configuration des événements ETW qui sont filtrés à partir de la collection. |
Peut contenir ces éléments :
|
CollectClrEvents |
Affectez une valeur qui détermine si les événements du CLR sont collectés. |
|
ClrCollectionOptions |
Spécifie s'il faut collecter des événements de la CLR pour les applications natives, et s'il faut collecter des événements d'arrêt NGEN. |
Peut contenir une, deux ou aucune de ces valeurs :
|
CollectSampleEvents |
Définit une valeur qui détermine si des événements d'échantillonnage sont collectés. |
|
CollectGpuEvents |
Définit une valeur qui détermine si les événements générés par DX sont collectées. |
|
CollectFileIO |
Définit une valeur qui détermine si les événements d'e/S de fichier sont collectées. |
|
UserBufferSettings |
Spécifie la liste de paramètres de mémoire utilisateur. |
Doit contenir ces éléments :
|
KernelBufferSettings |
Spécifie la liste de paramètres de mémoire du noyau. |
Doit contenir ces éléments :
|
BufferFlushTimer |
Spécifie le délai d'expiration des mémoires tampons ETW. |
Un entier positif. |
BufferSize |
Quantité de mémoire qui est allouée pour chaque mémoire tampon de session de suivi d'événements, en kilo-octets. |
Un nombre entre 0 et 1024. |
MinimumBuffers |
Le nombre minimal de mémoires tampons allouées pour le pool de tampons de la session de suivi d'événement. |
Un nombre entier supérieur ou égal à deux fois le nombre de cœurs logiques. |
MaximumBuffers |
Nombre maximal de mémoires tampons allouées pour le pool de tampons de la session de suivi d'événement. |
Un nombre supérieur ou égal à MinimumBuffers. |
JustMyCode |
Spécifie la liste des dossiers Just My Code. |
Une liste de zéro ou plusieurs éléments MyCodeDirectory. |
MyCodeDirectory |
Spécifie un dossier qui contient votre code. |
Un chemin d'accès absolu. |
Exemple
Au lieu de créer un fichier de configuration à partir du début, vous pouvez copier l'exemple suivant et le modifier selon vos besoins.
<?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>