Bagikan melalui


utilitas analisis performa dotnet-trace

Artikel ini berlaku untuk: ✔️ dotnet-trace 3.0.47001 dan versi yang lebih baru

Instal

Ada dua cara untuk mengunduh dan menginstal dotnet-trace:

Catatan

Untuk menggunakan dotnet-trace pada aplikasi x86, Anda memerlukan alat versi x86 yang sesuai.

Sinopsis

dotnet-trace [-h, --help] [--version] <command>

Deskripsi

Alat dotnet-trace:

  • Adalah alat .NET Core lintas platform.
  • Memungkinkan pengumpulan jejak .NET Core dari proses yang sedang berjalan tanpa profiler asli.
  • Dibangun pada EventPipe runtime bahasa umum .NET Core.
  • Memberikan pengalaman yang sama di Windows, Linux, atau macOS.

Opsi

  • -h|--help

    Tampilkan bantuan baris perintah.

  • --version

    Menampilkan versi utilitas dotnet-trace.

  • --duration

    Berapa lama untuk menjalankan jejak. --duration 00:00:00:05 akan menjalankannya selama 5 detik.

Perintah

Perintah
dotnet-trace collect
dotnet-trace convert
dotnet-trace ps
dotnet-trace list-profiles
dotnet-trace report

dotnet-trace collect

Mengumpulkan jejak diagnostik dari proses yang sedang berjalan atau meluncurkan proses anak dan melacaknya (.NET 5 atau yang lebih baru). Agar alat menjalankan proses anak dan melacaknya dari startup-nya, tambahkan -- ke perintah kumpulkan.

Sinopsis

dotnet-trace collect [--buffersize <size>] [--clreventlevel <clreventlevel>] [--clrevents <clrevents>]
    [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [--duration dd:hh:mm:ss]
    [-n, --name <name>] [--diagnostic-port] [-o|--output <trace-file-path>] [-p|--process-id <pid>]
    [--profile <profile-name>] [--providers <list-of-comma-separated-providers>]
    [-- <command>] (for target applications running .NET 5 or later)
    [--show-child-io] [--resume-runtime]
    [--stopping-event-provider-name <stoppingEventProviderName>]
    [--stopping-event-event-name <stoppingEventEventName>]
    [--stopping-event-payload-filter <stoppingEventPayloadFilter>]

Opsi

  • --buffersize <size>

    Mengatur ukuran buffer dalam memori, dalam megabyte. Default 256 MB.

    Catatan

    Jika proses target memancarkan peristiwa lebih cepat daripada yang dapat ditulis ke disk, buffer ini mungkin meluap dan beberapa peristiwa akan dihilangkan. Anda dapat mengurangi masalah ini dengan meningkatkan ukuran buffer atau mengurangi jumlah peristiwa yang direkam.

  • --clreventlevel <clreventlevel>

    Verbositas peristiwa CLR yang akan dipancarkan. Tabel berikut ini memperlihatkan tingkat peristiwa yang tersedia.

    Nilai untai (karakter) Nilai numerik
    logalways 0
    critical 1
    error 2
    warning 3
    informational 4
    verbose 5
  • --clrevents <clrevents>

    Daftar kata kunci penyedia runtime CLR untuk mengaktifkan dipisahkan oleh tanda +. Ini adalah pemetaan sederhana yang memungkinkan Anda menentukan kata kunci peristiwa melalui alias string daripada nilai heksanya. Misalnya, dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:3:4 meminta serangkaian peristiwa yang sama dengan dotnet-trace collect --clrevents gc+gchandle --clreventlevel informational. Tabel di bawah ini memperlihatkan daftar kata kunci yang tersedia:

    Alias String Kata Kunci Nilai Heksa Kata Kunci
    gc 0x1
    gchandle 0x2
    fusion 0x4
    loader 0x8
    jit 0x10
    ngen 0x20
    startenumeration 0x40
    endenumeration 0x80
    security 0x400
    appdomainresourcemanagement 0x800
    jittracing 0x1000
    interop 0x2000
    contention 0x4000
    exception 0x8000
    threading 0x10000
    jittedmethodiltonativemap 0x20000
    overrideandsuppressngenevents 0x40000
    type 0x80000
    gcheapdump 0x100000
    gcsampledobjectallocationhigh 0x200000
    gcheapsurvivalandmovement 0x400000
    gcheapcollect 0x800000
    gcheapandtypenames 0x1000000
    gcsampledobjectallocationlow 0x2000000
    perftrack 0x20000000
    stack 0x40000000
    threadtransfer 0x80000000
    debugger 0x100000000
    monitoring 0x200000000
    codesymbols 0x400000000
    eventsource 0x800000000
    compilation 0x1000000000
    compilationdiagnostic 0x2000000000
    methoddiagnostic 0x4000000000
    typediagnostic 0x8000000000

    Anda dapat membaca tentang penyedia CLR secara lebih rinci tentang dokumentasi referensi penyedia runtime .NET.

  • --format {Chromium|NetTrace|Speedscope}

    Mengatur format output untuk konversi file pelacakan. Default adalah NetTrace.

  • -n, --name <name>

    Nama proses untuk mengumpulkan jejak.

  • --diagnostic-port <path-to-port>

    Nama port diagnostik yang akan dibuat. Lihat Menggunakan port diagnostik untuk mengumpulkan jejak dari startup aplikasi untuk mempelajari cara menggunakan opsi ini untuk mengumpulkan jejak dari startup aplikasi.

  • --duration <time-to-run>

    Waktu untuk pelacakan berjalan. Gunakan format .dd:hh:mm:ss Misalnya 00:00:00:05 akan menjalankannya selama 5 detik.

  • -o|--output <trace-file-path>

    Jalur output untuk data pelacakan yang dikumpulkan. Jika tidak ditentukan, defaultnya adalah <appname>_<yyyyMMdd>_<HHmmss>.nettrace, misalnya, 'myapp_20210315_111514.nettrace''.

  • -p|--process-id <PID>

    ID proses untuk mengumpulkan jejak.

  • --profile <profile-name>

    Sekumpulan konfigurasi penyedia bernama yang telah ditentukan sebelumnya yang memungkinkan skenario pelacakan umum ditentukan secara singkat. Profil berikut ini tersedia:

Profil Deskripsi
cpu-sampling Berguna untuk melacak penggunaan CPU dan informasi runtime bahasa umum .NET umum. Ini adalah opsi default jika tidak ada profil atau penyedia yang ditentukan.
gc-verbose Melacak koleksi pengumpulan sampah dan sampel alokasi objek.
gc-collect Melacak koleksi pengumpulan sampah hanya pada overhead yang sangat rendah.
  • --providers <list-of-comma-separated-providers>

    Daftar yang dipisahkan koma penyedia EventPipe untuk diaktifkan. Penyedia ini melengkapi penyedia apa pun yang tersirat oleh --profile <profile-name>. Jika ada ketidakkonsistensian untuk penyedia tertentu, konfigurasi ini lebih diutamakan daripada konfigurasi implisit dari profil.

    Daftar penyedia ini ada dalam formulir:

    • Provider[,Provider]
    • Provider dalam bentuk: KnownProviderName[:Flags[:Level][:KeyValueArgs]].
    • KeyValueArgs dalam bentuk: [key1=value1][;key2=value2].

    Untuk mempelajari lebih lanjut tentang beberapa penyedia terkenal di .NET, lihat Penyedia Peristiwa terkenal.

  • -- <command> (untuk aplikasi target yang menjalankan .NET 5 atau yang lebih baru)

    Setelah parameter konfigurasi pengumpulan, pengguna dapat menambahkan -- diikuti dengan perintah untuk memulai aplikasi .NET dengan setidaknya runtime 5.0. Ini mungkin berguna saat mendiagnosis masalah yang terjadi di awal proses, seperti masalah performa startup atau pemuat rakitan dan kesalahan pengikat.

    Catatan

    Menggunakan opsi ini memantau proses .NET 5 pertama yang berkomunikasi kembali ke alat, yang berarti jika perintah Anda meluncurkan beberapa aplikasi .NET, perintah hanya akan mengumpulkan aplikasi pertama. Oleh karena itu, disarankan agar Anda menggunakan opsi ini pada aplikasi mandiri, atau menggunakan opsi dotnet exec <app.dll>.

  • --show-child-io

    Menampilkan aliran input dan output dari proses anak yang diluncurkan di konsol saat ini.

  • --resume-runtime

    Lanjutkan runtime setelah sesi diinisialisasi, default ke true. Nonaktifkan resume runtime menggunakan --resume-runtime:false.

  • --stopping-event-provider-name

    String, diurai apa adanya, yang akan menghentikan jejak setelah mencapai peristiwa dengan nama penyedia yang cocok. Untuk acara penghentian yang lebih spesifik, berikan --stopping-event-event-name dan/atau --stopping-event-payload-filter. misalnya --stopping-event-provider-name Microsoft-Windows-DotNETRuntime untuk menghentikan jejak setelah mencapai peristiwa pertama yang dipancarkan oleh Microsoft-Windows-DotNETRuntime penyedia acara.

  • --stopping-event-event-name

    String, diurai apa adanya, yang akan menghentikan jejak setelah mencapai peristiwa dengan nama peristiwa yang cocok. --stopping-event-provider-name Perlu diatur. Untuk acara penghentian yang lebih spesifik, berikan --stopping-event-payload-filterjuga . misalnya --stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted untuk menghentikan jejak setelah mencapai peristiwa pertama Method/JittingStarted yang dipancarkan oleh Microsoft-Windows-DotNETRuntime penyedia acara.

  • --stopping-event-payload-filter

    String, diurai sebagai pasangan [payload_field_name]:[payload_field_value] yang dipisahkan oleh koma, yang akan menghentikan jejak saat mencapai peristiwa yang berisi semua pasangan payload yang ditentukan. --stopping-event-provider-name Memerlukan dan --stopping-event-event-name untuk diatur. misalnya --stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClick untuk menghentikan jejak pada peristiwa pertama Method/JittingStarted untuk metode OnButtonClick di namespace yang dipancarkan Program oleh Microsoft-Windows-DotNETRuntime penyedia peristiwa.

Catatan

  • Menghentikan pelacakan mungkin memakan waktu lama (hingga menit) untuk aplikasi besar. Runtime perlu mengirim cache jenis untuk semua kode terkelola yang diambil dalam jejak.
  • Di Linux dan macOS, perintah ini mengharapkan aplikasi target dan dotnet-trace untuk membagikan variabel lingkungan TMPDIR yang sama. Jika tidak, perintah akan kehabisan waktu.
  • Untuk mengumpulkan pelacakan menggunakan dotnet-trace, metrik perlu dijalankan sebagai pengguna yang sama dengan pengguna yang menjalankan proses target atau sebagai akar. Jika tidak, alat akan gagal membuat koneksi dengan proses target.
  • Jika Anda melihat pesan kesalahan yang mirip dengan: [ERROR] System.ComponentModel.Win32Exception (299): A 32 bit processes cannot access modules of a 64 bit process., Anda mencoba menggunakan versi dari bitness dotnet-trace yang tidak cocok terhadap proses target. Pastikan untuk mengunduh bitness alat yang benar di link instal.
  • Jika Anda mengalami pengecualian yang tidak tertangani saat menjalankan dotnet-trace collect, ini menghasilkan jejak yang tidak lengkap. Jika menemukan akar penyebab pengecualian adalah prioritas Anda, navigasi ke Kumpulkan crash dump saat crash. Sebagai akibat dari pengecualian yang tidak tertangani, jejak dipotong ketika runtime dimatikan untuk mencegah perilaku lain yang tidak diinginkan seperti hang atau kerusakan data. Meskipun jejak tidak lengkap, Anda masih dapat membukanya untuk melihat apa yang terjadi menjelang kegagalan. Namun, itu akan kehilangan informasi Rundown (ini terjadi di akhir jejak) sehingga tumpukan mungkin tidak terselesaikan (tergantung pada penyedia apa yang diaktifkan). Buka jejak dengan mengeksekusi PerfView dengan bendera /ContinueOnError di baris perintah. Log juga akan berisi lokasi pengecualian dipicu.
  • Saat menentukan peristiwa penghentian melalui --stopping-event-* opsi, karena EventStream sedang diurai secara asinkron, akan ada beberapa peristiwa yang diteruskan di antara waktu peristiwa pelacakan yang cocok dengan opsi peristiwa penghentian yang ditentukan diurai dan EventPipeSession dihentikan.

dotnet-trace convert

Mengonversi pelacakan nettrace ke format alternatif untuk digunakan dengan alat analisis jejak alternatif.

Sinopsis

dotnet-trace convert [<input-filename>] [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [-o|--output <output-filename>]

Argumen

  • <input-filename>

    File pelacakan input yang akan dikonversi. Default ke trace.nettrace.

Opsi

  • --format <Chromium|NetTrace|Speedscope>

    Mengatur format output untuk konversi file pelacakan.

  • -o|--output <output-filename>

    Filename output. Ekstensi format target akan ditambahkan.

Catatan

Mengonversi file nettrace ke chromium atau file speedscope tidak dapat diubah. File speedscope dan chromium tidak memiliki semua informasi yang diperlukan untuk membuat ulang file nettrace. Namun, perintah convert mempertahankan file nettrace asli, jadi jangan hapus file ini jika Anda berencana untuk membukanya di masa mendatang.

dotnet-trace ps

Mencantumkan proses dotnet tempat pelacakan dapat dikumpulkan. dotnet-trace 6.0.320703 dan yang lebih baru, juga menampilkan argumen baris perintah yang dimulai setiap proses, jika tersedia.

Sinopsis

dotnet-trace ps [-h|--help]

Contoh

Misalkan Anda memulai aplikasi yang berjalan lama menggunakan perintah dotnet run --configuration Release. Di jendela lain, Anda menjalankan perintah dotnet-trace ps. Output yang akan Anda lihat adalah sebagai berikut. Argumen baris perintah, jika ada, ditampilkan dalam dotnet-trace versi 6.0.320703 dan yang lebih baru.

> dotnet-trace ps
  
  21932 dotnet     C:\Program Files\dotnet\dotnet.exe   run --configuration Release
  36656 dotnet     C:\Program Files\dotnet\dotnet.exe

dotnet-trace list-profiles

Mencantumkan profil pelacakan bawaan dengan deskripsi penyedia dan filter apa yang ada di setiap profil.

Sinopsis

dotnet-trace list-profiles [-h|--help]

dotnet-trace report

Membuat laporan ke stdout dari jejak yang dihasilkan sebelumnya.

Sinopsis

dotnet-trace report [-h|--help] <tracefile> [command]

Argumen

  • <tracefile>

    Jalur file untuk pelacakan yang dianalisis.

Perintah

dotnet-trace report topN

Menemukan metode N teratas yang telah berada di callstack paling lama.

Sinopsis
dotnet-trace report <tracefile> topN [-n|--number <n>] [--inclusive] [-v|--verbose] [-h|--help]
Opsi
  • -n|--number <n>

Memberikan metode N teratas pada callstack.

  • --inclusive

Keluarkan metode N teratas berdasarkan waktu inklusif. Jika tidak ditentukan, waktu eksklusif digunakan secara default.

  • -v|--verbose

Keluarkan parameter dari setiap metode secara penuh. Jika tidak ditentukan, parameter akan dipotong.

Mengumpulkan jejak dengan dotnet-trace

Untuk mengumpulkan jejak menggunakan dotnet-trace:

  • Dapatkan pengidentifikasi proses (PID) dari aplikasi .NET Core untuk mengumpulkan jejak.

    • Di Windows, Anda dapat menggunakan Manajer Tugas atau perintah tasklist, misalnya.
    • Di Linux, misalnya, perintah ps.
    • dotnet-trace ps
  • Jalankan perintah berikut:

    dotnet-trace collect --process-id <PID>
    

    Perintah sebelumnya menghasilkan output yang mirip dengan berikut ini:

    Press <Enter> to exit...
    Connecting to process: <Full-Path-To-Process-Being-Profiled>/dotnet.exe
    Collecting to file: <Full-Path-To-Trace>/trace.nettrace
    Session Id: <SessionId>
    Recording trace 721.025 (KB)
    
  • Hentikan pengumpulan dengan menekan tombol <Enter>. dotnet-trace akan menyelesaikan peristiwa pengelogan ke file trace.nettrace.

Luncurkan aplikasi anak dan kumpulkan jejak dari startup-nya menggunakan dotnet-trace

Penting

Ini hanya berfungsi untuk aplikasi yang menjalankan .NET 5 atau yang lebih baru.

Terkadang mungkin berguna untuk mengumpulkan jejak proses dari startup-nya. Untuk aplikasi yang menjalankan .NET 5 atau yang lebih baru, dimungkinkan untuk melakukan ini dengan menggunakan dotnet-trace.

Ini akan diluncurkan hello.exe dengan arg1 dan arg2 sebagai argumen baris perintahnya dan mengumpulkan jejak dari startup runtime-nya:

dotnet-trace collect -- hello.exe arg1 arg2

Perintah sebelumnya menghasilkan output yang mirip dengan berikut ini:

No profile or providers specified, defaulting to trace profile 'cpu-sampling'

Provider Name                           Keywords            Level               Enabled By
Microsoft-DotNETCore-SampleProfiler     0x0000F00000000000  Informational(4)    --profile
Microsoft-Windows-DotNETRuntime         0x00000014C14FCCBD  Informational(4)    --profile

Process        : E:\temp\gcperfsim\bin\Debug\net5.0\gcperfsim.exe
Output File    : E:\temp\gcperfsim\trace.nettrace


[00:00:00:05]   Recording trace 122.244  (KB)
Press <Enter> or <Ctrl+C> to exit...

Anda dapat berhenti mengumpulkan jejak dengan menekan tombol <Enter> atau <Ctrl + C>. Melakukan ini juga akan mengeluarkan hello.exe.

Catatan

Meluncurkan hello.exe melalui dotnet-trace akan mengalihkan input/output-nya dan Anda tidak akan dapat berinteraksi dengannya di konsol secara default. Gunakan sakelar --show-child-io untuk berinteraksi dengan stdin/stdout-nya. Keluar dari alat melalui CTRL+C atau SIGTERM akan dengan aman mengakhiri alat dan proses anak. Jika proses anak keluar sebelum alat, alat akan keluar juga dan jejak harus dapat dilihat dengan aman.

Menggunakan port diagnostik untuk mengumpulkan jejak dari startup aplikasi

Penting

Ini hanya berfungsi untuk aplikasi yang menjalankan .NET 5 atau yang lebih baru.

Port diagnostik adalah fitur runtime bahasa umum yang ditambahkan di .NET 5 yang memungkinkan Anda memulai pelacakan dari startup aplikasi. Untuk melakukan ini menggunakan dotnet-trace, Anda dapat menggunakan dotnet-trace collect -- <command> seperti yang dijelaskan dalam contoh di atas, atau menggunakan opsi --diagnostic-port.

Menggunakan dotnet-trace <collect|monitor> -- <command> untuk meluncurkan aplikasi sebagai proses anak adalah cara paling sederhana untuk dengan cepat melacak aplikasi dari startup-nya.

Namun, ketika Anda ingin mendapatkan kontrol yang lebih baik selama masa pakai aplikasi yang dilacak (misalnya, pantau aplikasi selama 10 menit pertama saja dan lanjutkan eksekusi) atau jika Anda perlu berinteraksi dengan aplikasi menggunakan CLI, menggunakan opsi --diagnostic-port memungkinkan Anda mengontrol aplikasi target yang dipantau dan dotnet-trace.

  1. Perintah di bawah ini membuat soket dotnet-trace diagnostik bernama myport.sock dan menunggu koneksi.

    dotnet-trace collect --diagnostic-port myport.sock
    

    Output:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sock
    
  2. Di konsol terpisah, luncurkan aplikasi target dengan variabel lingkungan DOTNET_DiagnosticPorts yang diatur ke nilai dalam output dotnet-trace.

    export DOTNET_DiagnosticPorts=/home/user/myport.sock
    ./my-dotnet-app arg1 arg2
    

    Ini kemudian harus mengaktifkan dotnet-trace untuk memulai pelacakan my-dotnet-app:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=myport.sock
    Starting a counter session. Press Q to quit.
    

    Penting

    Meluncurkan aplikasi dotnet run Anda dapat bermasalah karena CLI dotnet mungkin menghasilkan banyak proses turunan yang bukan aplikasi Anda dan dapat terhubung ke dotnet-trace sebelum aplikasi Anda, sehingga aplikasi Anda ditangguhkan pada durasi. Disarankan Anda langsung menggunakan versi aplikasi mandiri atau menggunakan dotnet exec untuk meluncurkan aplikasi.

Melihat jejak yang diambil dari dotnet-trace

Di Windows, Anda dapat melihat file .nettrace di Visual Studio atau PerfView untuk analisis.

Di Linux, Anda dapat melihat jejak dengan mengubah format output dotnet-trace menjadi speedscope. Ubah format file output dengan menggunakan opsi -f|--format. Anda dapat memilih antara nettrace (opsi default) dan speedscope. Opsi -f speedscope ini akan membuat dotnet-trace menghasilkan file speedscope. File Speedscope dapat dibuka di https://www.speedscope.app.

Untuk jejak yang dikumpulkan pada platform non-Windows, Anda juga dapat memindahkan file jejak ke komputer Windows dan melihatnya di Visual Studio atau PerfView.

Catatan

Runtime bahasa umum .NET Core menghasilkan jejak dalam format nettrace. Jejak dikonversi menjadi speedscope (jika ditentukan) setelah pelacakan selesai. Karena beberapa konversi dapat mengakibatkan hilangnya data, file nettrace asli dipertahankan di samping file yang dikonversi.

Gunakan dotnet-trace untuk mengumpulkan nilai penghitung dari waktu ke waktu

dotnet-trace dapat:

  • Gunakan EventCounter untuk pemantauan kesehatan dasar di lingkungan yang sensitif terhadap performa. Misalnya, dalam produksi.
  • Kumpulkan jejak sehingga tidak perlu dilihat secara real time.

Misalnya, untuk mengumpulkan nilai penghitung kinerja runtime, gunakan perintah berikut:

dotnet-trace collect --process-id <PID> --providers System.Runtime:0:1:EventCounterIntervalSec=1

Perintah sebelumnya memberi tahu penghitung runtime bahasa umum untuk melaporkan setiap detik sekali untuk pemantauan kesehatan ringan. Mengganti EventCounterIntervalSec=1 dengan nilai yang lebih tinggi (misalnya, 60) memungkinkan pengumpulan jejak yang lebih kecil dengan granularitas yang lebih sedikit dalam data penghitung.

Perintah berikut mengurangi overhead dan melacak ukuran lebih dari yang sebelumnya:

dotnet-trace collect --process-id <PID> --providers System.Runtime:0:1:EventCounterIntervalSec=1,Microsoft-Windows-DotNETRuntime:0:1,Microsoft-DotNETCore-SampleProfiler:0:1

Perintah sebelumnya menonaktifkan peristiwa runtime bahasa umum dan profiler tumpukan terkelola.

Gunakan file .rsp untuk menghindari mengetik perintah panjang

Anda dapat meluncurkan dotnet-trace dengan file .rsp yang berisi argumen yang akan diteruskan. Ini dapat berguna saat mengaktifkan penyedia yang mengharapkan argumen panjang atau saat menggunakan lingkungan shell yang menghapus karakter.

Misalnya, penyedia berikut dapat rumit untuk mengetik setiap kali Anda ingin melacak:

dotnet-trace collect --providers Microsoft-Diagnostics-DiagnosticSource:0x3:5:FilterAndPayloadSpecs="SqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandBefore@Activity1Start:-Command;Command.CommandText;ConnectionId;Operation;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nSqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandAfter@Activity1Stop:\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting@Activity2Start:-Command;Command.CommandText;ConnectionId;IsAsync;Command.Connection.ClientConnectionId;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted@Activity2Stop:",OtherProvider,AnotherProvider

Selain itu, contoh sebelumnya berisi " sebagai bagian dari argumen. Karena tanda kutip tidak ditangani secara merata oleh setiap shell, Anda mungkin mengalami berbagai masalah saat menggunakan shell yang berbeda. Misalnya, perintah untuk dimasukkan zsh berbeda dengan perintah di cmd.

Daripada mengetik ini setiap kali, Anda dapat menyimpan teks berikut ke dalam file yang disebut myprofile.rsp.

--providers
Microsoft-Diagnostics-DiagnosticSource:0x3:5:FilterAndPayloadSpecs="SqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandBefore@Activity1Start:-Command;Command.CommandText;ConnectionId;Operation;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nSqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandAfter@Activity1Stop:\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting@Activity2Start:-Command;Command.CommandText;ConnectionId;IsAsync;Command.Connection.ClientConnectionId;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted@Activity2Stop:",OtherProvider,AnotherProvider

Setelah menyimpan myprofile.rsp, Anda dapat meluncurkan dotnet-trace dengan konfigurasi ini menggunakan perintah berikut:

dotnet-trace @myprofile.rsp

Lihat juga