dotnet-trace performans analizi yardımcı programı

Bu makale şunlar için geçerlidir: ✔️ dotnet-trace 3.0.47001 ve sonraki sürümler

Yükle

İndirmenin ve yüklemenin dotnet-traceiki yolu vardır:

Dekont

Bir x86 uygulamasında kullanmak dotnet-trace için aracın ilgili x86 sürümünü kullanmanız gerekir.

Özet

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

Açıklama

Araç dotnet-trace :

  • Platformlar arası bir .NET Core aracıdır.
  • Yerel profil oluşturucu olmadan çalışan bir işlemin .NET Core izlemelerinin toplanmasını sağlar.
  • .NET Core çalışma zamanını temel alır EventPipe .
  • Windows, Linux veya macOS'ta aynı deneyimi sunar.

Seçenekler

  • -h|--help

    Komut satırı yardımlarını gösterir.

  • --version

    dotnet-trace yardımcı programının sürümünü görüntüler.

  • --duration

    İzlemenin ne kadar süreyle çalıştırılır? --duration 00:00:00:05 5 saniye boyunca çalıştırır.

Komutlar

Command
dotnet-trace collect
dotnet-trace convert
dotnet-trace ps
dotnet-trace list-profiles
dotnet-trace raporu

dotnet-trace collect

Çalışan bir işlemden tanılama izlemesi toplar veya bir alt işlemi başlatır ve izler (.NET 5 veya üzeri). Aracın bir alt işlemi çalıştırmasını ve başlangıçtan izlemesini sağlamak için collect komutuna ekleme -- .

Özet

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

Seçenekler

  • --buffersize <size>

    Bellek içi arabelleğin boyutunu megabayt cinsinden ayarlar. Varsayılan 256 MB.

    Dekont

    Hedef işlem olayları diske yazılamayacak kadar hızlı yayarsa, bu arabellek taşabilir ve bazı olaylar bırakılır. Arabellek boyutunu artırarak veya kaydedilen olay sayısını azaltarak bu sorunu azaltabilirsiniz.

  • --clreventlevel <clreventlevel>

    Yayılacak CLR olaylarının ayrıntı düzeyi. Aşağıdaki tabloda kullanılabilir olay düzeyleri gösterilmektedir.

    Dize değeri seçeneğini belirleyin Sayısal değer
    logalways 0
    critical 1
    error 2
    warning 3
    informational 4
    verbose 5
  • --clrevents <clrevents>

    İşaretlerle ayrılmış + olarak etkinleştirilebilmesi için CLR çalışma zamanı sağlayıcısı anahtar sözcüklerinin listesi. Bu, olay anahtar sözcüklerini onaltılık değerleri yerine dize diğer adları aracılığıyla belirtmenize olanak tanıyan basit bir eşlemedir. Örneğin, dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:3:4 ile aynı olay dotnet-trace collect --clrevents gc+gchandle --clreventlevel informationalkümesini istemektedir. Aşağıdaki tabloda kullanılabilir anahtar sözcüklerin listesi gösterilmektedir:

    Anahtar Sözcük Dizesi Diğer Adı Anahtar Sözcük Onaltılık Değeri
    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

    .NET çalışma zamanı sağlayıcısı başvuru belgelerinde CLR sağlayıcısı hakkında daha ayrıntılı bilgi edinebilirsiniz.

  • --format {Chromium|NetTrace|Speedscope}

    İzleme dosyası dönüştürme için çıkış biçimini ayarlar. Varsayılan değer: NetTrace.

  • -n, --name <name>

    İzlemeyi toplayacak işlemin adı.

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

    Oluşturulacak tanılama bağlantı noktasının adı. Uygulama başlangıcından izleme toplamak için bu seçeneği nasıl kullanacağınızı öğrenmek için bkz . Uygulama başlangıcından izleme toplamak için tanılama bağlantı noktasını kullanma.

  • --duration <time-to-run>

    İzlemenin çalıştırılacak zamanı. dd:hh:mm:ss Biçimini kullanın. Örneğin 00:00:00:05 , 5 saniye boyunca çalıştırılır.

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

    Toplanan izleme verilerinin çıkış yolu. Belirtilmezse varsayılan olarak <appname>_<yyyyMMdd>_<HHmmss>.nettrace'myapp_20210315_111514.nettrace'' olur.

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

    İzlemeyi toplamak için işlem kimliği.

  • --profile <profile-name>

    Yaygın izleme senaryolarının kısa bir şekilde belirtilmesine izin veren, önceden tanımlanmış adlandırılmış bir sağlayıcı yapılandırma kümesi. Aşağıdaki profiller kullanılabilir:

Profil Açıklama
cpu-sampling CPU kullanımını ve genel .NET çalışma zamanı bilgilerini izlemek için kullanışlıdır. Profil veya sağlayıcı belirtilmezse bu varsayılan seçenektir.
gc-verbose GC koleksiyonlarını ve örnek nesne ayırmalarını izler.
gc-collect GC koleksiyonlarını yalnızca çok düşük ek yükte izler.
  • --providers <list-of-comma-separated-providers>

    Etkinleştirilecek sağlayıcıların EventPipe virgülle ayrılmış listesi. Bu sağlayıcılar tarafından --profile <profile-name>ima edilen tüm sağlayıcıları destekler. Belirli bir sağlayıcı için herhangi bir tutarsızlık varsa, bu yapılandırma profilden örtük yapılandırmaya göre önceliklidir.

    Bu sağlayıcı listesi şu biçimdedir:

    • Provider[,Provider]
    • Provider biçimindedir: KnownProviderName[:Flags[:Level][:KeyValueArgs]].
    • KeyValueArgs biçimindedir: [key1=value1][;key2=value2].

    .NET'teki bazı iyi bilinen sağlayıcılar hakkında daha fazla bilgi edinmek için bkz. İyi bilinen Olay Sağlayıcıları.

  • -- <command> (.NET 5 veya üzerini çalıştıran hedef uygulamalar için)

    Koleksiyon yapılandırma parametrelerinden sonra, kullanıcı en az 5.0 çalışma zamanına sahip bir .NET uygulaması başlatmak için bir komut ekleyebilir -- . Bu, başlangıç performansı sorunu veya derleme yükleyicisi ve bağlayıcı hataları gibi sürecin erken aşamalarında oluşan sorunları tanılarken yararlı olabilir.

    Dekont

    Bu seçeneğin kullanılması, araca geri iletişim kuran ilk .NET 5 işlemini izler; yani komutunuz birden çok .NET uygulaması başlatırsa yalnızca ilk uygulamayı toplar. Bu nedenle, bu seçeneği bağımsız uygulamalarda veya seçeneğini kullanarak kullanmanız dotnet exec <app.dll> önerilir.

  • --show-child-io

    Geçerli konsolda başlatılan bir alt işlemin giriş ve çıkış akışlarını gösterir.

  • --resume-runtime

    Oturum başlatıldıktan sonra çalışma zamanını sürdür, varsayılan olarak true olur. --resume-runtime:false kullanarak çalışma zamanının sürdürülme özelliğini devre dışı bırakın.

  • --stopping-event-provider-name

    Eşleşen sağlayıcı adıyla bir olaya ulaşıldığında izlemeyi durduran, olduğu gibi ayrıştırılan bir dize. Daha belirgin bir durdurma olayı için ayrıca ve/veya --stopping-event-payload-filtersağlayın--stopping-event-event-name. örneğin --stopping-event-provider-name Microsoft-Windows-DotNETRuntime , olay sağlayıcısı tarafından yayılan ilk olaya ulaşılırken izlemenin Microsoft-Windows-DotNETRuntime durdurulması.

  • --stopping-event-event-name

    Eşleşen olay adıyla bir olaya ulaşıldığında izlemeyi durduran, olduğu gibi ayrıştırılmış bir dize. --stopping-event-provider-name Ayarlanması gerekir. Daha belirgin bir durdurma olayı için ek olarak sağlayın --stopping-event-payload-filter. örneğin --stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted , olay sağlayıcısı tarafından yayılan ilk Method/JittingStarted olaya ulaşılırken izlemenin Microsoft-Windows-DotNETRuntime durdurulması.

  • --stopping-event-payload-filter

    [payload_field_name]:[payload_field_value] çiftleri virgülle ayrılmış olarak ayrıştırılan bir dize, belirtilen tüm yük çiftlerini içeren bir olaya ulaşıldığında izlemeyi durdurur. --stopping-event-provider-name Ve'nin --stopping-event-event-name ayarlanması gerekir. örneğin--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClick, olay sağlayıcısı tarafından yayılan ad alanındaki Program yöntemin OnButtonClick ilk Method/JittingStarted olayında izlemenin Microsoft-Windows-DotNETRuntime durdurulması.

Dekont

  • İzlemenin durdurulması büyük uygulamalar için uzun sürebilir (dakikalara kadar). Çalışma zamanının izlemede yakalanan tüm yönetilen kodlar için tür önbelleği üzerinden göndermesi gerekir.
  • Linux ve macOS'ta bu komut hedef uygulamanın ve dotnet-trace aynı TMPDIR ortam değişkenini paylaşmasını bekler. Aksi takdirde, komut zaman aşımına uğradı.
  • kullanarak dotnet-tracebir izleme toplamak için hedef işlemi çalıştıran kullanıcıyla aynı kullanıcı veya kök olarak çalıştırılması gerekir. Aksi takdirde araç hedef işlemle bağlantı kuramaz.
  • şuna benzer [ERROR] System.ComponentModel.Win32Exception (299): A 32 bit processes cannot access modules of a 64 bit process.bir hata iletisi görürseniz, hedef işlemle eşleşmeyen bitlik içeren bir sürümünü dotnet-trace kullanmaya çalışıyorsunuzdur. Yükleme bağlantısında aracın doğru bitliğini indirdiğinizden emin olun.
  • komutunu çalıştırırken dotnet-trace collectişlenmeyen bir özel durumla karşılaşırsanız bu, tamamlanmamış bir izlemeyle sonuçlanırsa. Önceliğiniz özel durumun kök nedenini bulmaksa Kilitlenme durumunda dökümleri toplama bölümüne gidin. İşlenmeyen özel durumun bir sonucu olarak, çalışma zamanı kapatıldığında kilitlenme veya veri bozulması gibi diğer istenmeyen davranışları önlemek için izleme kesilir. İzleme tamamlanmamış olsa da, hataya neden olan şeyleri görmek için yine de bunu açabilirsiniz. Ancak, yığınların çözümlenebilmesi için (hangi sağlayıcıların açık olduğuna bağlı olarak) Rundown bilgileri eksik olacaktır (bu, izlemenin sonunda gerçekleşir). Komut satırında bayrağıyla /ContinueOnError PerfView'ı yürüterek izlemeyi açın. Günlükler, özel durumun tetiklendiği konumu da içerir.
  • EventStream zaman uyumsuz olarak ayrıştırıldığından --stopping-event-* , seçenekler aracılığıyla bir durdurma olayı belirtirken, belirtilen durdurma olayı seçenekleriyle eşleşen bir izleme olayının ayrıştırılması ve EventPipeSession'ın durdurulması arasında geçen bazı olaylar olacaktır.

dotnet-trace convert

İzlemeleri nettrace alternatif izleme çözümleme araçlarıyla kullanılmak üzere alternatif biçimlere dönüştürür.

Özet

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

Bağımsız değişkenler

  • <input-filename>

    Dönüştürülecek giriş izleme dosyası. Varsayılan olarak trace.nettrace olarak değiştirilir.

Seçenekler

  • --format <Chromium|NetTrace|Speedscope>

    İzleme dosyası dönüştürme için çıkış biçimini ayarlar.

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

    Çıktı dosya adı. Hedef biçimin uzantısı eklenir.

Dekont

nettrace Dosyaları veya speedscope dosyaları chromium dönüştürme işlemi geri alınamaz. speedscope ve chromium dosyalar, dosyaları yeniden yapılandırmak nettrace için gereken tüm bilgilere sahip değildir. Ancak, convert komut özgün nettrace dosyayı korur, bu nedenle gelecekte açmayı planlıyorsanız bu dosyayı silmeyin.

dotnet-trace ps

İzlemelerin toplanabileceği dotnet işlemlerini listeler. dotnet-trace 6.0.320703 ve üzeri, varsa her işlemin başlatıldığı komut satırı bağımsız değişkenlerini de görüntüler.

Özet

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

Örnek

komutunu dotnet run --configuration Releasekullanarak uzun süre çalışan bir uygulama başlattığınızı varsayalım. Başka bir pencerede komutunu çalıştırırsınız dotnet-trace ps . Göreceğiniz çıkış aşağıdaki gibidir. Varsa, komut satırı bağımsız değişkenleri 6.0.320703 ve sonraki sürümlerde dotnet-trace gösterilir.

> 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

Her profilde hangi sağlayıcıların ve filtrelerin olduğunu açıklayan önceden oluşturulmuş izleme profillerini listeler.

Özet

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

dotnet-trace raporu

Daha önce oluşturulmuş bir izlemeden stdout'a bir rapor oluşturur.

Özet

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

Bağımsız değişkenler

  • <tracefile>

    Çözümlenen izlemenin dosya yolu.

Komutlar

dotnet-trace report topN

Çağrı yığınında en uzun olan en iyi N yöntemlerini bulur.

Özet
dotnet-trace report <tracefile> topN [-n|--number <n>] [--inclusive] [-v|--verbose] [-h|--help]
Seçenekler
  • -n|--number <n>

Çağrı yığınındaki en iyi N yöntemlerini verir.

  • --inclusive

Kapsayıcı saate göre en iyi N yöntemlerinin çıkışını alın. Belirtilmezse, özel kullanım süresi varsayılan olarak kullanılır.

  • -v|--verbose

Her yöntemin parametrelerini tam olarak çıktısını alır. Belirtilmezse, parametreler kesilir.

dotnet-trace ile izleme toplama

kullanarak dotnet-traceizlemeleri toplamak için:

  • İzlemeleri toplamak için .NET Core uygulamasının işlem tanımlayıcısını (PID) alın.

    • Windows'da Görev Yöneticisi'ni tasklist veya komutunu kullanabilirsiniz.
    • Örneğin ps Linux'ta komutu.
    • dotnet-trace ps
  • Şu komutu çalıştırın:

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

    Yukarıdaki komut aşağıdakine benzer bir çıkış oluşturur:

    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)
    
  • Tuşuna basarak toplamayı <Enter> durdurun. dotnet-trace, olayları trace.nettrace dosyasına kaydetmeyi tamamlar.

Dotnet-trace kullanarak bir alt uygulama başlatın ve başlangıçtan bir izleme toplayın

Önemli

Bu, yalnızca .NET 5 veya üzerini çalıştıran uygulamalar için çalışır.

Bazen başlangıçtan bir işlemin izlemesini toplamak yararlı olabilir. .NET 5 veya üzerini çalıştıran uygulamalar için bunu dotnet-trace kullanarak yapmak mümkündür.

Bu, komut satırı bağımsız değişkenleri olarak ve arg2 ile arg1 başlatılır hello.exe ve çalışma zamanı başlangıcından bir izleme toplar:

dotnet-trace collect -- hello.exe arg1 arg2

Yukarıdaki komut aşağıdakine benzer bir çıkış oluşturur:

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

veya <Ctrl + C> tuşuna basarak <Enter> izlemeyi toplamayı durdurabilirsiniz. Bunu yaptığınızda da uygulamasından çıkılır hello.exe.

Dekont

hello.exe dotnet-trace aracılığıyla başlatıldığında giriş/çıkış yeniden yönlendirilir ve varsayılan olarak konsolda onunla etkileşim kuramazsınız. --show-child-io anahtarını kullanarak stdin/stdout ile etkileşime geçin. CTRL+C veya SIGTERM aracılığıyla araçdan çıkmak hem aracı hem de alt işlemi güvenli bir şekilde sonlandıracaktır. Alt işlem araçdan önce çıkarsa, araç da çıkar ve izleme güvenli bir şekilde görüntülenebilir olmalıdır.

Uygulama başlangıcından izleme toplamak için tanılama bağlantı noktasını kullanma

Önemli

Bu, yalnızca .NET 5 veya üzerini çalıştıran uygulamalar için çalışır.

Tanılama bağlantı noktası , .NET 5'te eklenen ve uygulama başlangıcından izlemeye başlamanızı sağlayan bir çalışma zamanı özelliğidir. Bunu kullanarak dotnet-traceyapmak için yukarıdaki örneklerde açıklandığı gibi kullanabilir dotnet-trace collect -- <command> veya seçeneğini kullanabilirsiniz --diagnostic-port .

dotnet-trace <collect|monitor> -- <command> Uygulamayı alt işlem olarak başlatmak için kullanmak, uygulamayı başlangıçtan hızla izlemenin en kolay yoludur.

Ancak, izlenen uygulamanın ömrü üzerinde daha ayrıntılı bir denetim elde etmek istediğinizde (örneğin, uygulamayı yalnızca ilk 10 dakika izleyin ve yürütmeye devam edin) veya CLI kullanarak uygulamayla etkileşime geçmeniz gerekiyorsa, seçeneğini kullanarak --diagnostic-port hem izlenen dotnet-tracehedef uygulamayı hem de öğesini denetlemenize olanak tanır.

  1. Aşağıdaki dotnet-trace komut adlı myport.sock bir tanılama yuvası oluşturur ve bağlantı bekler.

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

    Çıkış:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sock
    
  2. Ayrı bir konsolda, ortam değişkeni DOTNET_DiagnosticPorts çıkıştaki dotnet-trace değere ayarlanmış şekilde hedef uygulamayı başlatın.

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

    Bu, izlemeyi my-dotnet-appbaşlatmak için etkinleştirilmelidirdotnet-trace:

    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.
    

    Önemli

    dotnet run dotnet CLI'sı uygulamanız olmayan ve uygulamanızdan önce bağlanabilen dotnet-trace birçok alt işlem ortaya çıkarabildiğinden uygulamanızın başlatılması sorun olabilir ve bu işlem uygulamanızı çalışma zamanında askıya alınır duruma bırakır. Doğrudan uygulamanın bağımsız bir sürümünü kullanmanız veya uygulamayı başlatmak için kullanmanız dotnet exec önerilir.

dotnet-trace'den yakalanan izlemeyi görüntüleme

Windows'da analiz için .nettrace dosyalarını Visual Studio'da veya PerfView'dagörüntüleyebilirsiniz.

Linux'ta, çıkış biçimini dotnet-tracespeedscopeolarak değiştirerek izlemeyi görüntüleyebilirsiniz. seçeneğini kullanarak -f|--format çıkış dosyası biçimini değiştirin. (varsayılan seçenek) ile speedscopearasında nettrace seçim yapabilirsiniz. seçeneği -f speedscope bir speedscope dosya üretmesini sağlardotnet-trace. Speedscope dosyaları adresinde https://www.speedscope.appaçılabilir.

Windows olmayan platformlarda toplanan izlemeler için, izleme dosyasını bir Windows makinesine taşıyabilir ve Visual Studio veya PerfView'da görüntüleyebilirsiniz.

Dekont

.NET Core çalışma zamanı biçiminde izlemeler nettrace oluşturur. İzleme tamamlandıktan sonra izlemeler speedscope'a (belirtilirse) dönüştürülür. Bazı dönüştürmeler veri kaybına neden olabileceğinden, özgün nettrace dosya dönüştürülen dosyanın yanında korunur.

Zaman içinde sayaç değerlerini toplamak için dotnet-trace kullanma

dotnet-trace -bilirsiniz:

  • Performansa duyarlı ortamlarda temel sistem durumu izleme için kullanın EventCounter . Örneğin, üretimde.
  • Gerçek zamanlı olarak görüntülenmesi gerekmeyecek şekilde izlemeleri toplayın.

Örneğin, çalışma zamanı performans sayacı değerlerini toplamak için aşağıdaki komutu kullanın:

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

Yukarıdaki komut, çalışma zamanı sayaçlarına basit sistem durumu izleme için saniyede bir rapor vermelerini söyler. EventCounterIntervalSec=1 değerinin daha yüksek bir değerle değiştirilmesi (örneğin, 60), sayaç verilerinde daha az ayrıntı düzeyine sahip daha küçük bir izlemenin toplanmasına olanak tanır.

Aşağıdaki komut, ek yükü ve izleme boyutunu öncekinden daha fazla azaltır:

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

Yukarıdaki komut çalışma zamanı olaylarını ve yönetilen yığın profil oluşturucusunu devre dışı bırakır.

Uzun komutlar yazmamak için .rsp dosyasını kullanın

Geçirebileceğiniz bağımsız değişkenleri içeren bir .rsp dosyayla başlatabilirsinizdotnet-trace. Bu, uzun bağımsız değişkenler bekleyen sağlayıcıları etkinleştirirken veya karakterleri şeritleyen bir kabuk ortamı kullanırken yararlı olabilir.

Örneğin, izlemek istediğiniz her seferinde aşağıdaki sağlayıcının yazılması zahmetli olabilir:

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

Buna ek olarak, önceki örnekte bağımsız değişkenin bir parçası olarak yer alır " . Tırnak işaretleri her kabuk tarafından eşit olarak işlenmediğinden, farklı kabukları kullanırken çeşitli sorunlarla karşılaşabilirsiniz. Örneğin, girilir zsh komut içindeki komutundan cmdfarklıdır.

Bunu her seferinde yazmak yerine, aşağıdaki metni adlı myprofile.rspbir dosyaya kaydedebilirsiniz.

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

öğesini kaydettikten myprofile.rspsonra aşağıdaki komutu kullanarak bu yapılandırmayla başlatabilirsiniz dotnet-trace :

dotnet-trace @myprofile.rsp

Ayrıca bkz.