Utilidad de la línea de comandos del visualizador de simultaneidad (CVCollectionCmd)
Se puede usar la utilidad de la línea de comandos (CVCollectionCmd.exe) del Visualizador de simultaneidad para recopilar seguimientos desde la línea de comandos de manera que los pueda ver en el Visualizador de simultaneidad para Visual Studio. Las herramientas se pueden usar en equipos que no tengan instalado Visual Studio.
Nota:
El Visualizador de simultaneidad es una extensión opcional. (Anteriormente se incluía en Visual Studio.) Puede descargar las Herramientas de recolección del visualizador de simultaneidad para Visual Studio desde el Centro de descarga.
Descarga de la utilidad de línea de comandos del Visualizador de simultaneidad
Para descargar e instalar la utilidad de línea de comandos, vaya a Herramientas de recolección del visualizador de simultaneidad para Visual Studio y siga las instrucciones. De forma predeterminada, CVCollectionCmd.exe se instala en %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ en equipos x64).
Recopile datos de un seguimiento con CVCollectionCmd
Para recopilar información de un seguimiento, inicie la aplicación con CVCollectionCmd o asóciela a ella. Consulte la siguiente referencia de comandos para conocer las opciones disponibles. Por ejemplo
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
Comandos y parámetros
Para obtener ayuda sobre los comandos y parámetros de la utilidad de la línea de comandos, escriba esto en el símbolo del sistema:
CvCollectionCmd /?
Opción | Descripción | Parámetros | Valores devueltos |
---|---|---|---|
Consulta | Devuelve si la recolección se puede iniciar. | None | 0 si la recolección está lista para comenzar. 1 si la recolección ya está en curso. 2 si la recolección no está en curso, pero una o más de las sesiones de ETW necesarias ya están habilitadas. |
Launch | Ejecuta el proceso especificado en el Visualizador de simultaneidad. | Ruta de acceso del archivo ejecutable. | 0 si la ejecución se realizó correctamente. 1 si se ha producido un error en la ejecución porque no se pudo iniciar la aplicación de destino. 13 si se produjo un error en la ejecución porque CVCollectionCmd no tenía permisos suficientes para escribir en el directorio de salida especificado. |
Attach | Comienza a recopilar un seguimiento de todo el sistema; de lo contrario, se asocia a un proceso si se ha especificado uno. | Ninguno. | 0 si la asociación se realizó correctamente. 1 si se produjo un error en la asociación porque el proceso especificado no era válido o era ambiguo. 13 si se produjo un error en la asociación porque CVCollectionCmd no tenía permisos suficientes para escribir en el directorio de salida especificado. |
Desasociar | Detiene la recolección. | Ninguno. | 0 si la desasociación se realizó correctamente. 1 si se produjo un error en la desasociación porque la recolección no estaba actualmente en curso. 2 si se produjo un error en la desasociación porque no se pudo detener la recolección. |
Analizar | Analiza el seguimiento especificado. | Ruta de acceso completa del archivo CVTrace. | 0 si el análisis se realizó correctamente. 1 si el análisis no puede comenzar porque el seguimiento especificado abarca todo el sistema, pero no se especificó ningún proceso de destino. 2 si el análisis no puede comenzar porque el seguimiento no abarcaba todo el sistema y se especificó un proceso. 3 si se produjo un error en el análisis porque el proceso especificado no es válido. 4 si se produjo un error en el análisis porque el archivo CVTrace especificado no es válido. |
LaunchArgs | Especifica los argumentos del archivo ejecutable de destino. Esta opción es aplicable solo al comando Launch. | Argumentos de la línea de comandos para la aplicación. | Ninguno. |
Outdir | Especifica el directorio en el que se guardarán los archivos de seguimiento. Se aplica a los comandos Launch y Attach. | Ruta de acceso del directorio o relativa. | Ninguno. |
Proceso | Especifica el proceso al que asociar cuando se ejecuta el comando Attach o el proceso en un seguimiento que analizar cuando se ejecuta el comando Analyze. Se aplica a los comandos Attach y Analyze. | PID o nombre del proceso. | Ninguno. |
Configuración | Especifica la ruta de acceso del archivo de configuración si quiere que la configuración de la recolección sea distinta de la predeterminada. Se aplica a los comandos Launch, Attach y Analyze. | Ruta de acceso del directorio o relativa del archivo de configuración XML. | Ninguno. |
Personalizar las opciones de configuración
Si utiliza CVCollectionCmd para recopilar seguimientos y desea personalizar las opciones de configuración, use un archivo de configuración para especificarlos.
Nota
Si utiliza Visual Studio para recopilar seguimientos, no modifique directamente el archivo de configuración. En su lugar, use el cuadro de diálogo Configuración avanzada para modificar la configuración.
Para modificar la configuración de la recolección, cree un archivo de configuración en la máquina donde se ejecutará la utilidad CVCollectionCmd. Puede crear el archivo de configuración desde cero o copiar el archivo de configuración en el equipo que tiene Visual Studio instalado y modificarlo. El archivo se denomina UserConfig.xml y se encuentra en la carpeta Local AppData. Cuando ejecute la utilidad, use la opción Config con el comando Launch, Attach o Analyze. En el parámetro asociado a la opción Config, especifique la ruta de acceso del archivo de configuración.
Etiquetas del archivo de configuración
El archivo de configuración está basado en XML. A continuación se muestran las etiquetas y los valores válidos:
Etiqueta | Descripción | Valores |
---|---|---|
Configuración | Delimita el archivo de configuración global. | Debe contener estos elementos: - MinorVersion - MajorVersion |
MajorVersion | Especifica la versión principal del archivo de configuración. | Debe ser 1 para la mayoría de los proyectos de Visual Studio. Si no es 1, la utilidad no funcionará. |
MinorVersion | Especifica la versión secundaria del archivo de configuración. | Debe ser 0 para la mayoría de los proyectos de Visual Studio. Si no es 0, la utilidad no funcionará. |
IncludeEnvSymbolPath | Establece un valor que determina si se usa la ruta de acceso de símbolo de entorno (_NT_SYMBOL_PATH). | - True - False |
DeleteEtlsAfterAnalysis | Establece un valor que determina si se eliminan los archivos ETL cuando se completa el análisis. | - True - False |
SymbolPath | Especifica la ruta de acceso del servidor de símbolos. Para más información, vea Utilizar el servidor de símbolos de Microsoft para obtener archivos de símbolos de depuración. | Nombre de directorio o dirección URL. |
Markers | Contiene la lista de proveedores de marcadores. | Puede contener cero o más elementos MarkerProvider. |
MarkerProvider | Especifica un proveedor de marcadores único. | Debe contener estos elementos: - Level - GUID - Name Puede contener estos elementos: - Categories - IsEnabled |
Nivel | Establece el nivel de importancia de un MarkerProvider. | - Low - Normal - High - Crítico - Everything |
GUID | Identificador único global del proveedor de marcadores ETW. | Un GUID. |
NOMBRE | Especifica la descripción del proveedor de marcadores. | Una cadena. |
Categorías | Especifica las categorías recopiladas por el proveedor de marcadores. | Cadena delimitada por comas de números o intervalos de números. |
IsEnabled | Establece un valor que determina si el proveedor de marcadores está habilitado para la recolección. | - True - False |
FilterConfig | Especifica la lista de opciones de configuración de los eventos ETW que se filtran de la recolección. | Puede contener estos elementos: - CollectClrEvents - ClrCollectionOptions - CollectSampleEvents - CollectGpuEvents - CollectFileIO |
CollectClrEvents | Establece un valor que determina si se recopilan eventos CLR. | - True - False |
ClrCollectionOptions | Especifica si se recopilan eventos CLR para aplicaciones nativas y si se van a recopilar eventos de detención de NGEN. | Puede contener uno, ambos o ninguno de estos valores: - CollectForNative - DisableNGenRundown |
CollectSampleEvents | Establece un valor que determina si se recopilan eventos de muestreo. | - True - False |
CollectGpuEvents | Establece un valor que determina si se recopilan los eventos que genere DX. | - True - False |
CollectFileIO | Establece un valor que determina si se recopilan eventos de E/S de archivo. | - True - False |
UserBufferSettings | Especifica la lista de parámetros de configuración de búfer del usuario. | Debe contener estos elementos: - BufferFlushTimer - BufferSize - MinimumBuffers - MaximumBuffers |
KernelBufferSettings | Especifica la lista de parámetros de configuración de búfer del kernel. | Debe contener estos elementos: - BufferFlushTimer - BufferSize - MinimumBuffers - MaximumBuffers |
BufferFlushTimer | Especifica el temporizador de vaciado de los búferes ETW. | Un entero positivo. |
BufferSize | Cantidad de memoria asignada para cada búfer de sesión de seguimiento de eventos, en kilobytes. | Un número del 0 al 1.024. |
MinimumBuffers | Número mínimo de búferes asignados para el grupo de búferes de la sesión de seguimiento de eventos. | Un entero positivo mayor o igual que el doble del número de núcleos lógicos. |
MaximumBuffers | Número máximo de búferes asignados para el grupo de búferes de la sesión de seguimiento de eventos. | Un número mayor o igual que el valor de MinimumBuffers. |
JustMyCode | Especifica la lista de directorios de Solo mi código. | Una lista de cero o más elementos MyCodeDirectory. |
MyCodeDirectory | Especifica un directorio que contiene el código. | Una ruta de acceso absoluta. |
Ejemplo
En lugar de crear un archivo de configuración desde el principio, puede copiar el ejemplo siguiente y después modificarlo para que se ajuste a sus necesidades.
<?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>