Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser l’utilitaire de ligne de commande du visualiseur concurrentiel (CVCollectionCmd.exe) pour collecter des traces à partir de la ligne de commande afin de pouvoir les afficher dans le visualiseur concurrentiel pour Visual Studio. Les outils peuvent être utilisés sur les ordinateurs qui n’ont pas visual Studio installé.
Note
Le visualiseur concurrentiel est une extension facultative. (Auparavant, elle avait été incluse dans Visual Studio.) Vous pouvez télécharger les outils de collection du visualiseur concurrentiel pour Visual Studio à partir du Centre de téléchargement.
Télécharger l’utilitaire de ligne de commande du visualiseur concurrentiel
Pour télécharger et installer l’utilitaire de ligne de commande, accédez à Concurrency Visualizer Collection Tools pour Visual Studio et suivez les instructions. Par défaut, CVCollectionCmd.exe est installé dans %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ sur les ordinateurs x64).
Collecter une trace avec CVCollectionCmd
Vous pouvez collecter une trace en démarrant l’application avec CVCollectionCmd ou en vous y attachant. Consultez la référence de commande ci-dessous pour connaître vos options. Par exemple
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
Commandes et paramètres
Pour obtenir de l’aide sur les commandes et les paramètres dans l’utilitaire de ligne de commande, tapez-le à l’invite de commandes :
CvCollectionCmd / ?
| Choix | Descriptif | Paramètres | Valeurs de retour |
|---|---|---|---|
| Query | Indique si la collection peut être démarrée. | Aucun | 0 si la collecte est prête à démarrer. 1 si la collection est déjà en cours. 2 si la collecte n’est pas en cours, mais qu’une ou plusieurs sessions ETW requises sont déjà activées. |
| Launch | Exécute le processus spécifié sous le visualiseur 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 dispose d’autorisations insuffisantes pour écrire dans le répertoire de sortie spécifié. |
| Attach | Commence à collecter une trace à l’échelle du système ; sinon, se connecte à un processus s'il est spécifié. | Aucun. | 0 si l'attachement a réussi. 1 si la pièce jointe a échoué, car le processus spécifié n’est pas valide ou ambigu. 13 si la pièce jointe a échoué, car CVCollectionCmd dispose d’autorisations insuffisantes pour écrire dans le répertoire de sortie spécifié. |
| Detach | Arrête la collection. | Aucun. | 0 si le détachement a réussi. 1 si le détachement a échoué car la collecte n’est pas en cours. 2 si le détachement a échoué parce que la collecte n’a pas pu être arrêtée. |
| Analyser | Analyse la trace spécifiée. | 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 était à 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 qu’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é, car le fichier CVTrace spécifié n’est pas valide. |
| LaunchArgs | Spécifie les arguments exécutables cibles. Cette option s’applique uniquement à la commande Launch. | Arguments de ligne de commande de l’application. | Aucun. |
| Outdir | Spécifie le répertoire dans lequel enregistrer les fichiers de trace. S’applique aux commandes Launch et Attach. | Chemin d’accès au répertoire ou chemin relatif. | Aucun. |
| Processus | Spécifie le processus à attacher lorsque la commande Attach est exécutée, ou le processus d’une trace à analyser lorsque la commande Analyser est exécutée. S’applique aux commandes Attach et Analyze. | PID ou nom du processus. | Aucun. |
| Config | Spécifie le chemin d’accès du fichier de configuration, si vous souhaitez des paramètres de collection autres que les paramètres par défaut. S’applique aux commandes Launch, Attach et Analyze. | Chemin d’accès au répertoire ou chemin relatif du fichier de configuration XML. | Aucun. |
Personnaliser les paramètres de configuration
Si vous utilisez CVCollectionCmd pour collecter des traces et que vous souhaitez personnaliser les paramètres de collection, utilisez un fichier de configuration pour les spécifier.
Note
Lorsque vous utilisez Visual Studio pour collecter des traces, ne modifiez pas directement le fichier de configuration. Utilisez plutôt la boîte de dialogue Paramètres avancés pour modifier les paramètres.
Pour modifier les paramètres de collection, créez un fichier de configuration sur l’ordinateur sur lequel vous allez exécuter l’utilitaire CVCollectionCmd. Vous pouvez créer le fichier de configuration à partir de zéro, ou copier le fichier de configuration sur l’ordinateur sur lequel Visual Studio est installé et modifié. Le fichier est nommé UserConfig.xml et se trouve dans le dossier AppData local . Lorsque vous exécutez l’utilitaire, utilisez l’option Config conjointement avec la commande Launch, Attach ou Analyze. Dans le paramètre associé à l’option Config, spécifiez le chemin d’accès du fichier de configuration.
Balises de fichier de configuration
Le fichier de configuration est basé sur XML. Voici les balises et valeurs valides :
| Tag | Descriptif | Valeurs |
|---|---|---|
| Config | Démarcate le fichier de configuration global. | Doit contenir ces éléments : - VersionMineure - VersionPrincipale |
| MajorVersion | Spécifie la version principale du fichier de configuration. | La valeur doit être 1 pour la plupart des projets Visual Studio. Si ce n'est pas 1, l'utilitaire ne fonctionnera pas. |
| MinorVersion | Spécifie la version mineure du fichier config. | Doit être 0 pour la plupart des projets Visual Studio. Si ce n'est pas égal à 0, l’utilitaire ne fonctionnera pas. |
| IncludeEnvSymbolPath | Définit une valeur qui détermine si le chemin d’accès au symbole d’environnement (_NT_SYMBOL_PATH) est utilisé. | -Vrai - Faux |
| SupprimerLesETLsAprèsAnalyse | Définit une valeur qui détermine si les fichiers ETL sont supprimés une fois l’analyse terminée. | -Vrai - Faux |
| SymbolPath | Spécifie le chemin d’accès du serveur de symboles. Pour plus d’informations, consultez Utiliser le serveur de symboles Microsoft pour obtenir des fichiers de symboles de débogage. | Nom ou URL d’un répertoire. |
| Marqueurs | Contient la liste des fournisseurs de marqueurs. | Peut contenir zéro ou plusieurs éléments MarkerProvider. |
| FournisseurDeMarqueurs | Spécifie un seul fournisseur de marqueurs. | Doit contenir ces éléments : -Niveau - GUID – Nom Peut contenir ces éléments : -Catégories - IsEnabled |
| Level | Définit le niveau d’importance d’un MarkerProvider. | -Bas -Normal -Haut -Critique -Tout |
| GUID | Identificateur global unique du fournisseur de marqueurs ETW. | Un GUID. |
| Nom | Spécifie la description du fournisseur de marqueurs. | Chaîne. |
| Catégories | Spécifie les catégories collectées pour le fournisseur de marqueurs. | Chaîne délimitée par des virgules de nombres ou plages de nombres. |
| IsEnabled | Définit une valeur qui détermine si le fournisseur de marqueurs est activé pour la collecte. | -Vrai - Faux |
| FilterConfig | Spécifie la liste des options de configuration des événements ETW filtrés à partir de la collecte. | Peut contenir ces éléments : - CollectClrEvents - ClrCollectionOptions - CollectSampleEvents - CollectGpuEvents - CollectFileIO |
| CollectClrEvents | Définissez une valeur qui détermine si les événements CLR sont collectés. | -Vrai - Faux |
| ClrCollectionOptions | Spécifie s’il faut collecter des événements CLR pour les applications natives et s’il faut collecter des événements d’exécution NGEN. | Peut contenir une, les deux ou aucune de ces valeurs : - CollectForNative - DisableNGenRundown |
| CollecterÉchantillonsÉvénements | Définit une valeur qui détermine si des exemples d’événements sont collectés. | -Vrai - Faux |
| CollectGpuEvents | Définit une valeur qui détermine si les événements générés par DX sont collectés. | -Vrai - Faux |
| CollectFileIO | Définit une valeur qui détermine si les événements d’E/S de fichier sont collectés. | -Vrai - Faux |
| ParamètresDuTamponUtilisateur | Spécifie la liste des paramètres de mémoire tampon utilisateur. | Doit contenir ces éléments : - BufferFlushTimer - Taille de la mémoire tampon - MinimumBuffers - MaximumBuffers |
| Paramètres du tampon du noyau | Spécifie la liste des paramètres de mémoire tampon du noyau. | Doit contenir ces éléments : - BufferFlushTimer - BufferSize - MinimumBuffers - MaximumBuffers |
| BufferFlushTimer | Spécifie le minuteur de vidage des mémoires tampons ETW. | Entier positif. |
| BufferSize | Quantité de mémoire allouée pour chaque mémoire tampon de session de suivi d’événements, en kilo-octets. | Nombre compris entre 0 et 1024. |
| MinimumBuffers | Nombre minimal de mémoires tampons allouées pour le pool de mémoires tampons de la session de suivi des événements. | Entier positif 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 mémoires tampons de la session de suivi des événements. | Nombre supérieur ou égal à MinimumBuffers. |
| JustMyCode | Spécifie la liste des répertoires Just My Code. | Liste de zéro ou plusieurs éléments MyCodeDirectory. |
| MyCodeDirectory | Spécifie un répertoire qui contient votre code. | Chemin absolu. |
Example
Au lieu de créer un fichier de configuration à partir du début, vous pouvez copier l’exemple suivant, puis le modifier pour répondre à 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>