Bagikan melalui


Utilitas baris perintah Concurrency Visualizer (CVCollectionCmd)

Anda dapat menggunakan utilitas baris perintah Concurrency Visualizer (CVCollectionCmd.exe) untuk mengumpulkan jejak dari baris perintah sehingga Anda dapat melihatnya di Visualizer Konkurensi untuk Visual Studio. Alat dapat digunakan pada komputer yang tidak menginstal Visual Studio.

Nota

Visualizer Konkurensi adalah ekstensi opsional. (Sebelumnya telah disertakan dalam Visual Studio.) Anda dapat mengunduh alat koleksi Concurrency Visualizer untuk Visual Studio dari Pusat Unduhan.

Unduh utilitas baris perintah Concurrency Visualizer

Untuk mengunduh dan menginstal utilitas baris perintah, buka Concurrency Visualizer Collection Tools for Visual Studio dan ikuti petunjuknya. Secara default, CVCollectionCmd.exe diinstal di %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ pada komputer x64).

Kumpulkan jejak dengan CVCollectionCmd

Anda dapat mengumpulkan jejak dengan memulai aplikasi dengan CVCollectionCmd, atau dengan melampirkannya. Lihat referensi perintah di bawah ini untuk opsi Anda. Misalnya

<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data

Perintah dan parameter

Untuk mendapatkan bantuan tentang perintah dan parameter dalam utilitas baris perintah, ketik ini di prompt perintah:

CvCollectionCmd /?

Option Description Parameter-parameternya Mengembalikan nilai
Pertanyaan Apakah pengumpulan data dapat dimulai? None 0 jika koleksi siap dimulai.

1 jika pengumpulan sudah berjalan.

2 jika pengumpulan data tidak sedang berlangsung, tetapi satu atau beberapa sesi ETW yang diperlukan sudah diaktifkan.
Launch Menjalankan proses yang ditentukan di bawah Concurrency Visualizer. Jalur dari executable. 0 jika pelaksanaan berhasil.

1 jika eksekusi gagal karena aplikasi target tidak dapat dimulai.

13 jika eksekusi gagal karena CVCollectionCmd tidak memiliki cukup izin untuk menulis ke direktori output yang ditentukan.
Attach Mulai mengumpulkan jejak di seluruh sistem atau menautkan ke proses jika ditentukan. Tidak ada. 0 jika lampiran berhasil.

1 jika lampiran gagal karena proses yang ditentukan tidak valid atau ambigu.

13 jika lampiran gagal karena CVCollectionCmd memiliki izin yang tidak mencukupi untuk menulis ke direktori output yang ditentukan.
Detach Menghentikan pengumpulan. Tidak ada. 0 jika pencopotan berhasil.

1 jika pelepasan gagal karena pengumpulan data saat ini tidak sedang berlangsung.

2 jika pencopotan gagal akibat pengumpulan tidak dapat dihentikan.
Analyze Menganalisis jejak yang ditentukan. Jalur lengkap file CVTrace. 0 jika analisis berhasil.

1 jika analisis tidak dapat dimulai karena jejak yang ditentukan adalah seluruh sistem, tetapi tidak ada proses target yang ditentukan.

2 jika analisis gagal dimulai karena pelacakan bukan bersifat seluruh sistem dan proses ditentukan.

3 jika analisis gagal karena proses yang ditentukan tidak valid.

4 jika analisis gagal karena file CVTrace yang ditentukan tidak valid.
LaunchArgs Menentukan argumen target yang dapat dieksekusi. Opsi ini hanya berlaku untuk perintah Luncurkan. Argumen baris perintah untuk aplikasi. Tidak ada.
Kedaluwarsa Menentukan direktori tempat menyimpan file pelacakan. Berlaku untuk perintah Luncurkan dan Lampirkan. Jalur direktori atau jalur relatif. Tidak ada.
Proses Menentukan proses untuk dilampirkan saat perintah Lampirkan dijalankan, atau proses dalam pelacakan untuk dianalisis saat perintah Analisis dijalankan. Berlaku untuk perintah 'Lampirkan' dan 'Analisis'. PID atau nama proses. Tidak ada.
Config Menentukan jalur file konfigurasi, jika Anda menginginkan pengaturan pengumpulan selain default. Berlaku untuk perintah Luncurkan, Lampirkan, dan Analisis. Jalur direktori atau jalur relatif file konfigurasi XML. Tidak ada.

Menyesuaikan pengaturan konfigurasi

Jika Anda menggunakan CVCollectionCmd untuk mengumpulkan jejak dan Anda ingin menyesuaikan pengaturan koleksi, maka gunakan file konfigurasi untuk menentukannya.

Nota

Saat Anda menggunakan Visual Studio untuk mengumpulkan jejak, jangan langsung mengubah file konfigurasi. Sebagai gantinya, gunakan kotak dialog Pengaturan Tingkat Lanjut untuk mengubah pengaturan.

Untuk mengubah pengaturan koleksi, buat file konfigurasi di komputer tempat Anda akan menjalankan utilitas CVCollectionCmd. Anda dapat membuat file konfigurasi dari awal, atau Anda dapat menyalin file konfigurasi di komputer yang memiliki Visual Studio yang diinstal dan memodifikasinya. File diberi nama UserConfig.xml dan terletak di folder AppData Lokal . Saat Anda menjalankan utilitas, gunakan opsi Konfigurasi bersama dengan perintah Luncurkan, Lampirkan, atau Analisis. Dalam parameter yang terkait dengan opsi Konfigurasi, tentukan jalur file konfigurasi.

Tag berkas pengaturan

File konfigurasi berbasis XML. Berikut adalah tag dan nilai yang valid:

Tag Description Nilai
Config Menandai file konfigurasi secara keseluruhan. Harus berisi elemen-elemen ini:

- Versi Minor
- Versi Utama
Versi Utama Menentukan versi utama file konfigurasi. Harus 1 untuk sebagian besar proyek Visual Studio. Jika bukan 1, utilitas tidak akan berfungsi.
VersiMinor Menentukan versi minor dari file konfigurasi. Harus 0 untuk sebagian besar proyek Visual Studio. Jika bukan 0, utilitas tidak akan berfungsi.
Sertakan EnvSymbolPath Mengatur nilai yang menentukan apakah jalur simbol lingkungan (_NT_SYMBOL_PATH) digunakan. -Benar
-Palsu
HapusETLSesudahAnalisis Mengatur nilai yang menentukan apakah file ETL dihapus saat analisis selesai. -Benar
-Palsu
SymbolPath Menentukan jalur server simbol. Untuk informasi selengkapnya, lihat Menggunakan Microsoft Symbol Server untuk mendapatkan file simbol debug. Nama direktori atau URL.
Penanda Berisi daftar penyedia penanda. Mungkin berisi nol atau lebih elemen MarkerProvider.
MarkerProvider Menentukan penyedia penanda tunggal. Harus berisi elemen-elemen ini:

- Tingkat
- GUID
- Nama

Dapat berisi elemen-elemen ini:

-Kategori
- IsEnabled (Aktif)
Tingkat Mengatur tingkat kepentingan MarkerProvider. -Rendah
-Biasa
- Tinggi
-Kritis
-Segala sesuatu
Panduan Pengidentifikasi unik global dari penyedia penanda ETW. Sebuah GUID.
Nama Menentukan deskripsi penyedia penanda. String.
Kategori Menentukan kategori yang dikumpulkan untuk penyedia penanda. String angka atau rentang angka yang dibatasi koma.
ApakahDiaktifkan Mengatur nilai yang menentukan apakah penyedia penanda diaktifkan untuk pengumpulan. -Benar
-Palsu
FilterConfig Menentukan daftar opsi konfigurasi untuk peristiwa ETW yang dihilangkan dari proses koleksi. Mungkin berisi elemen-elemen ini:

- CollectClrEvents
- ClrCollectionOptions
- CollectSampleEvents
- CollectGpuEvents
- CollectFileIO
CollectClrEvents Tetapkan nilai yang menentukan apakah event CLR dikumpulkan. -Benar
-Palsu
ClrCollectionOptions Menentukan apakah akan mengumpulkan peristiwa CLR untuk aplikasi asli, dan apakah akan mengumpulkan peristiwa rundown NGEN. Mungkin berisi satu, keduanya, atau tidak satu pun dari nilai-nilai ini:

- CollectForNative
- DisableNGenRundown
KumpulkanAcaraSampel Menetapkan nilai yang menentukan apakah sampel peristiwa dikumpulkan. -Benar
-Palsu
CollectGpuEvents Menetapkan nilai yang menentukan apakah peristiwa yang dihasilkan oleh DX dikumpulkan. -Benar
-Palsu
CollectFileIO Menetapkan nilai yang menentukan apakah kejadian I/O file dikumpulkan atau tidak. -Benar
-Palsu
PengaturanBufferPengguna Menentukan daftar parameter pengaturan buffer pengguna. Harus berisi elemen-elemen ini:

- BufferFlushTimer
- BufferSize
- MinimumBuffers
- MaximumBuffers
PengaturanBufferKernel Menentukan daftar parameter pengaturan buffer kernel. Harus berisi elemen-elemen ini:

- BufferFlushTimer
- BufferSize
- MinimumBuffers
- MaximumBuffers
Pengatur Waktu Pengosongan Buffer Menentukan waktu flush untuk buffer ETW. Bilangan bulat positif.
BufferSize Jumlah memori yang dialokasikan untuk setiap buffer sesi pelacakan peristiwa, dalam kilobyte. Angka dari 0 hingga 1024.
MinimumBuffers Jumlah minimum buffer yang dialokasikan untuk kumpulan buffer sesi pelacakan peristiwa. Bilangan bulat positif lebih besar dari atau sama dengan dua kali jumlah inti logis.
MaximumBuffers Jumlah buffer maksimum yang dialokasikan untuk kumpulan buffer dari sesi pelacakan peristiwa. Angka yang lebih besar dari atau sama dengan MinimumBuffers.
JustMyCode Menentukan daftar direktori Just My Code. Daftar nol atau lebih elemen MyCodeDirectory.
MyCodeDirectory Menentukan direktori yang berisi kode Anda. Jalur mutlak.

Example

Alih-alih membuat file konfigurasi dari awal, Anda dapat menyalin contoh berikut lalu memodifikasinya untuk memenuhi kebutuhan Anda.

<?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>