Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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>