Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale şunlar için geçerlidir: ✔️ dotnet-trace 9.0.661903 ve sonraki sürümler
Yükleme
İndirmenin ve yüklemenin dotnet-traceiki yolu vardır:
dotnet genel aracı:
NuGet paketinin en son sürüm sürümünü
dotnet-traceyüklemek için dotnet tool install komutunu kullanın:dotnet tool install --global dotnet-traceDoğrudan indirme:
Platformunuzla eşleşen araç yürütülebilir dosyasını indirin:
işletim sistemi Platforma Windows x86 | x64 | Arm | Arm-x64 Linux işletim sistemi x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Ö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.İzlemeleri toplamanın iki farklı yolunu destekler:
-
Fiil
collect, herhangi bir işletim sisteminde tutarlı işlevsellik sunar. -
Fiil,
collect-linuxek özellikler sağlamak için Linux'a özgü işletim sistemi özelliklerini kullanır.
Özellik collectcollect-linuxDesteklenen işletim sistemi Herhangi biri Yalnızca Linux, çekirdek sürümü >= 6.4 Yönetici/Kök Ayrıcalığı Gerektirir Hayı Yes Tüm işlemleri aynı anda izleme Hayı Destekleniyor Yerel kitaplık ve çekirdek olaylarını yakalama Hayı Destekleniyor Olay çağrı yığınları yerel çerçeveler içerir Hayı Yes -
Fiil
Seçenekler
-h|--helpKomut satırı yardımlarını gösterir.
--versiondotnet-trace yardımcı programının sürümünü görüntüler.
Komutlar
| Komut |
|---|
| dotnet-trace collect |
| dotnet-trace collect-linux |
| 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>]
[--dsrouter <ios|ios-sim|android|android-emu>]
[--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 <list-of-comma-separated-profile-names>]
[--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.
Not
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. Bu seçenek yalnızca veya tarafından
--clrevents--profilebelirtildiğinde ve geçersiz kılınmadığında--providersgeçerlidir. Aşağıdaki tabloda kullanılabilir olay düzeyleri gösterilmektedir.Dize değeri seçeneğini belirleyin Sayısal değer logalways0critical1error2warning3informational4verbose5--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:4ile aynı olaydotnet-trace collect --clrevents gc+gchandle --clreventlevel informationalkümesini istemektedir. CLR çalışma zamanı sağlayıcısıMicrosoft-Windows-DotNETRuntimeveya--providersaracılığıyla--profileda etkinleştirildiyse, bu seçenek yoksayılır. 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 gc0x1gchandle0x2assemblyloader0x4loader0x8jit0x10ngen0x20startenumeration0x40endenumeration0x80security0x400appdomainresourcemanagement0x800jittracing0x1000interop0x2000contention0x4000exception0x8000threading0x10000jittedmethodiltonativemap0x20000overrideandsuppressngenevents0x40000type0x80000gcheapdump0x100000gcsampledobjectallocationhigh0x200000gcheapsurvivalandmovement0x400000managedheapcollect0x800000gcheapandtypenames0x1000000gcsampledobjectallocationlow0x2000000perftrack0x20000000stack0x40000000threadtransfer0x80000000debugger0x100000000monitoring0x200000000codesymbols0x400000000eventsource0x800000000compilation0x1000000000compilationdiagnostic0x2000000000methoddiagnostic0x4000000000typediagnostic0x8000000000jitinstrumentationdata0x10000000000profiler0x20000000000waithandle0x40000000000allocationsampling0x80000000000.NET çalışma zamanı sağlayıcısı başvuru belgelerinde CLR sağlayıcısı hakkında daha ayrıntılı bilgi edinebilirsiniz.
'--dsrouter {ios|ios-sim|android|android-emu}
dotnet-dsrouter'ı başlatır ve buna bağlanır. Dotnet-dsrouter'ın yüklenmesini gerektirir. Daha fazla bilgi için komutunu çalıştırın
dotnet-dsrouter -h.--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ı.
Not
Linux ve macOS'ta bu seçeneği kullanmak için hedef uygulamanın ve
dotnet-traceaynıTMPDIRortam değişkenini paylaşması gerekir. Aksi takdirde, komut zaman aşımına uğradı.--diagnostic-port <port-address[,(listen|connect)]>İzlenecek işlemle iletişim kurmak için kullanılan tanılama bağlantı noktasını ayarlar. dotnet-trace ve hedef işlemin içindeki .NET çalışma zamanı, bağlantı noktası adresi üzerinde bir dinleme ve diğeri bağlanarak anlaşmalıdır. dotnet-trace, veya
--process-idseçeneklerini kullanarak eklerken veya seçeneğini kullanarak--name-- <command>bir işlem başlatırken doğru bağlantı noktasını otomatik olarak belirler. Genellikle yalnızca gelecekte başlayacak bir işlemi beklerken veya geçerli işlem ad alanının parçası olmayan bir kapsayıcı içinde çalışan bir işlemle iletişim kurarken bağlantı noktasını açıkça belirtmek gerekir.işletim
port-addresssistemine göre farklılık gösterir:- Linux ve macOS - gibi
/foo/tool1.socketbir Unix etki alanı yuvası yolu. - Windows - gibi
\\.\pipe\my_diag_port1adlandırılmış bir kanalın yolu. - Android, iOS ve tvOS - gibi
127.0.0.1:9000bir IP:bağlantı noktası.
Varsayılan olarak,
dotnet-tracebelirtilen adreste dinler. Adresin arkasına ekleyerekdotnet-tracebunun yerine bağlanma isteğinde,connectbulunabilirsiniz. Örneğin,--diagnostic-port /foo/tool1.socket,connectUnix etki alanı yuvasını dinleyen bir .NET çalışma zamanı işlemine/foo/tool1.socketbağlanır.Uygulama başlangıcından izleme toplamak için bu seçeneğin nasıl kullanılacağını öğrenmek için bkz. Uygulama başlangıcından izleme toplamak için tanılama bağlantı noktasını kullanma.
- Linux ve macOS - gibi
--duration <time-to-run>İzlemenin çalıştırılacak zamanı.
dd:hh:mm:ssBiçimini kullanın. Örneğin00: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.
Not
Linux ve macOS'ta bu seçeneği kullanmak için hedef uygulamanın ve
dotnet-traceaynıTMPDIRortam değişkenini paylaşması gerekir. Aksi takdirde, komut zaman aşımına uğradı.--profile <list-of-comma-separated-profile-names>Profil, yaygın izleme senaryoları için önceden tanımlanmış bir sağlayıcı yapılandırmaları kümesidir. Aynı anda virgülle ayrılmış birden çok profil belirtilebilir. Profilin yapılandırmasını geçersiz kılarak
--providersyapılandırılan sağlayıcılar. Benzer şekilde, herhangi bir profil CLR çalışma zamanı sağlayıcısını yapılandırırsa, aracılığıyla--clreventsbelirtilen tüm yapılandırmaları geçersiz kılar.,
--profileve değerlerinin tümü atlandığında--providers,--clreventsprofilleridotnet-trace collectvedotnet-commonvarsayılan olarakdotnet-sampled-thread-timeetkinleştirir.Kullanılabilir profiller:
Profil Açıklama dotnet-commonDüşük yükte kalmak için tasarlanmış basit .NET çalışma zamanı tanılamaları.
GC, AssemblyLoader, Loader, JIT, Exceptions, Threading, JittedMethodILToNativeMap ve Derleme olaylarını içerir
--providers "Microsoft-Windows-DotNETRuntime:0x100003801D:4"eşdeğerdir.dotnet-sampled-thread-timeZaman içindeki etkin noktaları tanımlamak için .NET iş parçacığı yığınlarını (~100 Hz) örnekler. Yönetilen yığınlarla çalışma zamanı örnek profil oluşturucuyu kullanır. gc-verboseGC koleksiyonlarını ve örnek nesne ayırmalarını izler. gc-collectGC koleksiyonlarını yalnızca çok düşük ek yükte izler. databaseADO.NET ve Entity Framework veritabanı komutlarını yakalar. Not
dotnet-trace aracının önceki sürümlerinde toplama fiili adlı
cpu-samplingbir profili destekleiyordu. Ad yanıltıcı olduğundan bu profil kaldırıldı. CPU kullanımlarından bağımsız olarak tüm iş parçacıklarını örneklemektedir. Şimdi kullanarak--profile dotnet-sampled-thread-time,dotnet-commonbenzer bir sonuç elde edebilirsiniz. Öncekicpu-samplingdavranışı tam olarak eşleştirmeniz gerekiyorsa kullanın--profile dotnet-sampled-thread-time --providers "Microsoft-Windows-DotNETRuntime:0x14C14FCCBD:4".--providers <list-of-comma-separated-providers>Etkinleştirilecek sağlayıcıların
EventPipevirgülle ayrılmış listesi. Bu sağlayıcılar tarafından--profile <list-of-comma-separated-profile-names>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 ve--profileüzerindeki örtük yapılandırmadan--clreventsönceliklidir.Bu sağlayıcı listesi biçimindedir
Provider[,Provider]:-
Providerşu biçimdedir:KnownProviderName[:Flags[:Level[:KeyValueArgs]]] -
KeyValueArgsşu biçimdedir:[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.Not
Bu seçeneğin kullanılması, araca geri iletişim kuran ilk .NET 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-ioGeçerli konsolda başlatılan bir alt işlemin giriş ve çıkış akışlarını gösterir.
--resume-runtimeOturum 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-nameEş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-event-namesağlayın--stopping-event-payload-filter. örneğin,--stopping-event-provider-name Microsoft-Windows-DotNETRuntimeolay sağlayıcısı tarafındanMicrosoft-Windows-DotNETRuntimeyayılan ilk olaya ulaşılırken izlemeyi durdurmak için.--stopping-event-event-nameEşleşen olay adıyla bir olaya ulaşıldığında izlemeyi durduran, olduğu gibi ayrıştırılmış bir dize.
--stopping-event-provider-nameAyarlanması 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/JittingStartedolay sağlayıcısı tarafındanMethod/JittingStartedyayılan ilkMicrosoft-Windows-DotNETRuntimeolaya ulaşılırken izlemeyi durdurmak için.--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-nameVe'nin--stopping-event-event-nameayarlanması gerekir. örneğin,--stopping-event-provider-name Microsoft-Windows-DotNETRuntime --stopping-event-event-name Method/JittingStarted --stopping-event-payload-filter MethodNameSpace:Program,MethodName:OnButtonClickolay sağlayıcısı tarafındanMethod/JittingStartedyayılan ad alanındakiOnButtonClickyönteminProgramilkMicrosoft-Windows-DotNETRuntimeolayında izlemeyi durdurmak için.
Not
- İ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.
- 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.
- 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/ContinueOnErrorPerfView'ı 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 collect-linux
Not
Fiil collect-linux yeni bir önizleme özelliğidir ve .nettrace dosya biçiminin güncelleştirilmiş bir sürümüne dayanır. En son PerfView sürümü bu izleme dosyalarını destekler, ancak ve convertgibi report izleme dosyasını kullanmanın diğer yolları henüz çalışmayabilir.
Bir Linux işletim sistemi teknolojisi olan perf_events kullanarak tanılama izlemelerini toplar.
collect-linux , üzerinde collectaşağıdaki ek özellikleri etkinleştirir.
| Özellik | collect |
collect-linux |
|---|---|---|
| Desteklenen işletim sistemi | Herhangi biri | Yalnızca Linux, çekirdek sürümü >= 6.4 |
| Yönetici/Kök ayrıcalığı gerektirir | Hayı | Yes |
| Tüm işlemleri aynı anda izleme | Hayı | Destekleniyor |
| Yerel kitaplık ve çekirdek olaylarını yakalama | Hayı | Destekleniyor |
| Olay çağrı yığınları yerel çerçeveler içerir | Hayı | Yes |
Önkoşullar
- Desteği olan
CONFIG_USER_EVENTS=yLinux çekirdeği (çekirdek 6.4+) - Kök izinler
- .NET 10+
Not
Fiil collect-linux yalnızca glibc sürüm 2.35 veya üzeri olan linux x64 ve linux arm64 ortamlarında çalışır.
Alpine 3.22, CentOS Stream 9 ve Red Hat Enterprise Linux 9 tabanlı tüm dağıtımlar dışında resmi olarak desteklenen tüm .NET 10 Linux dağıtımları bu gereksinimi destekler.
Bir sistemin libc sürümünü denetlemenin hızlı bir yolu, komutuyla ldd --version veya doğrudan libc kitaplığını yürütmektir.
Özet
dotnet-trace collect-linux
[-h|--help]
# Provider/Event Specification
[--providers <list-of-comma-separated-providers>]
[--clreventlevel <clreventlevel>]
[--clrevents <clrevents>]
[--perf-events <list-of-perf-events>]
[--profile <list-of-comma-separated-profile-names>]
# Trace Collection
[-o|--output <trace-file-path>]
[--duration dd:hh:mm:ss]
# .NET Process Target (Optional)
[-n, --name <name>]
[-p|--process-id <pid>]
# Probe mode
[--probe]
Varsayılan koleksiyon davranışı
, --providers, --profileve --clrevents belirtilmediğinde--perf-events, collect-linux bu profilleri varsayılan olarak etkinleştirir:
-
dotnet-common— basit .NET çalışma zamanı tanılamaları. -
cpu-sampling— çekirdek CPU örneklemesi.
Varsayılan olarak, makinedeki tüm işlemler izlenir. Yalnızca bir işlemi izlemek için veya -n, --name <name>kullanın-p|--process-id <PID>.
Seçenekler
Sağlayıcı/Olay Belirtimi Seçenekleri
--providers <list-of-comma-separated-providers>Etkinleştirilecek sağlayıcıların
EventPipevirgülle ayrılmış listesi. Bu sağlayıcılar tarafından--profile <list-of-comma-separated-profile-names>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 ve--profileüzerindeki örtük yapılandırmadan--clreventsönceliklidir.Bu sağlayıcı listesi biçimindedir
Provider[,Provider]:-
Providerşu biçimdedir:KnownProviderName[:Flags[:Level[:KeyValueArgs]]] -
KeyValueArgsşu biçimdedir:[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ı.
-
--clreventlevel <clreventlevel>Yayılacak CLR olaylarının ayrıntı düzeyi. Bu seçenek yalnızca veya tarafından
--clrevents--profilebelirtildiğinde ve geçersiz kılınmadığında--providersgeçerlidir. Aşağıdaki tabloda kullanılabilir olay düzeyleri gösterilmektedir.Dize değeri seçeneğini belirleyin Sayısal değer logalways0critical1error2warning3informational4verbose5--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-linux --providers Microsoft-Windows-DotNETRuntime:3:4ile aynı olaydotnet-trace collect-linux --clrevents gc+gchandle --clreventlevel informationalkümesini istemektedir. CLR çalışma zamanı sağlayıcısıMicrosoft-Windows-DotNETRuntimeveya--providersaracılığıyla--profileda etkinleştirildiyse, bu seçenek yoksayılır. 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 gc0x1gchandle0x2assemblyloader0x4loader0x8jit0x10ngen0x20startenumeration0x40endenumeration0x80security0x400appdomainresourcemanagement0x800jittracing0x1000interop0x2000contention0x4000exception0x8000threading0x10000jittedmethodiltonativemap0x20000overrideandsuppressngenevents0x40000type0x80000gcheapdump0x100000gcsampledobjectallocationhigh0x200000gcheapsurvivalandmovement0x400000managedheapcollect0x800000gcheapandtypenames0x1000000gcsampledobjectallocationlow0x2000000perftrack0x20000000stack0x40000000threadtransfer0x80000000debugger0x100000000monitoring0x200000000codesymbols0x400000000eventsource0x800000000compilation0x1000000000compilationdiagnostic0x2000000000methoddiagnostic0x4000000000typediagnostic0x8000000000jitinstrumentationdata0x10000000000profiler0x20000000000waithandle0x40000000000allocationsampling0x80000000000.NET çalışma zamanı sağlayıcısı başvuru belgelerinde CLR sağlayıcısı hakkında daha ayrıntılı bilgi edinebilirsiniz.
--perf-events <list-of-perf-events>İzlemeye eklenecek performans olaylarının virgülle ayrılmış listesi. Kullanılabilir olaylar, genellikle tüm kullanılabilir olaylar için aracılığıyla veya kategorilere ayrılmış olaylar için alt dizin aracılığıyla öğesine bağlanan
/sys/kernel/tracingavailable_eventsevents/altında bulunabilir.Örnek:
--perf-events syscalls:sys_enter_execve,sched:sched_switch,sched:sched_wakeup--profile <list-of-comma-separated-profile-names>Profil, yaygın izleme senaryoları için önceden tanımlanmış bir sağlayıcı yapılandırmaları kümesidir. Aynı anda virgülle ayrılmış birden çok profil belirtilebilir. Profilin yapılandırmasını geçersiz kılarak
--providersyapılandırılan sağlayıcılar. Benzer şekilde, herhangi bir profil CLR çalışma zamanı sağlayıcısını yapılandırırsa, aracılığıyla--clreventsbelirtilen tüm yapılandırmaları geçersiz kılar., , ve değerlerinin tümü atlandığında
--profile,--providersprofilleri--clreventsve--perf-eventsvarsayılan olarak etkinleştirir.dotnet-trace collect-linuxdotnet-commoncpu-samplingKullanılabilir profiller:
Profil Açıklama dotnet-commonDüşük yükte kalmak için tasarlanmış basit .NET çalışma zamanı tanılamaları.
GC, AssemblyLoader, Loader, JIT, Exceptions, Threading, JittedMethodILToNativeMap ve Derleme olaylarını içerir
--providers "Microsoft-Windows-DotNETRuntime:0x100003801D:4"eşdeğerdir.cpu-samplingÇekirdek CPU örneklemesi (performans tabanlı), hassas CPU ilişkilendirmesi için olarak Universal.Events/cpuyayılan.thread-timeÇekirdek iş parçacığı bağlam anahtarları, on/off-CPU ve zamanlayıcı analizi için olarak Universal.Events/cswitchyayılır.gc-verboseGC koleksiyonlarını ve örnek nesne ayırmalarını izler. gc-collectGC koleksiyonlarını yalnızca çok düşük ek yükte izler. databaseADO.NET ve Entity Framework veritabanı komutlarını yakalar.
İzleme Koleksiyonu Seçenekleri
-o|--output <trace-file-path>Toplanan izleme verilerinin çıkış yolu. Belirtilmezse, varsayılan
trace_<yyyyMMdd>_<HHmmss>.nettraceolarak makine genelinde izleme ve<appname>_<yyyyMMdd>_<HHmmss>.nettraceişleme özgü izleme (--nameveya--process-id) için olarak kullanılır--duration <time-to-run>İzlemenin çalıştırılacak zamanı.
dd:hh:mm:ssBiçimini kullanın. Örneğin00:00:00:05, 5 saniye boyunca çalıştırılır.
.NET İşlem Hedefi Seçenekleri
Bkz . Varsayılan koleksiyon davranışı
-n, --name <name>İzlemeyi toplayacak işlemin adı.
-p|--process-id <PID>İzlemeyi toplamak için işlem kimliği.
Yoklama modu seçenekleri
--probe [-n|--name] [-p|--process-id] [-o|--output <stdout|output-filename>]İzleme toplamadan collect-linux tarafından kullanılan EventPipe UserEvents IPC komutunun desteklenmesi için yoklama .NET işlemleri. Sonuçlar önce desteklenen işlemleri listeler. CSV'yi (pid,processName,supportsCollectLinux) konsola yazdırmak için '-o stdout' veya CSV'yi yazmak için '-o output-filename' kullanın. -n|--name veya -p|--process-id ile tek bir işlemi yoklama.
Yoklama modunda çalıştırmak
collect-linuxbir izleme toplamadığından, çalıştırmak için kök izinler gerektirmez. Önkoşulların doğrulanması sağlanmaz ve .NET Çalışma Zamanı '10.0.0' önizleme sürümlerinde çalışan .NET işlemleri desteklenmeyen olarak kabul edilir.
Not
kullanarak
dotnet-trace collect-linuxbir izleme toplamak için kök izinlerle (CAP_PERFMON/CAP_SYS_ADMIN) çalıştırılması gerekir. Aksi takdirde araç olayları toplamaz.
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.
Not
nettrace Dosyaları veya chromium dosyaları speedscope 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.
Not
Numaralandırılmış 64 bit işlemleriyle ilgili tam bilgi almak için aracın 64 bit sürümünü dotnet-trace kullanmanız gerekir.
Ö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-trace collectizlemeleri 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
tasklistveya komutunu kullanabilirsiniz. - Örneğin
psLinux'ta komutu. - dotnet-trace ps
- Windows'da Görev Yöneticisi'ni
Şu komutu çalıştırın:
dotnet-trace collect --process-id <PID>Yukarıdaki komut aşağıdakine benzer bir çıkış oluşturur:
No profile or providers specified, defaulting to trace profiles 'dotnet-common' + 'dotnet-sampled-thread-time'. Provider Name Keywords Level Enabled By Microsoft-Windows-DotNETRuntime 0x000000100003801D Informational(4) --profile Microsoft-DotNETCore-SampleProfiler 0x0000F00000000000 Informational(4) --profile Process : <full-path-to-process-being-trace> Output File : <process>_20251007_154557.nettrace [00:00:00:02] Recording trace 178.172 (KB) Press <Enter> or <Ctrl+C> to exit... Stopping the trace. This may take several minutes depending on the application being traced. Trace completed.Enter tuşuna basarak koleksiyonu durdurun.
dotnet-trace, olayları dosyaya kaydetmeyi.nettracetamamlar.
Dotnet-trace kullanarak bir alt uygulama başlatın ve başlangıçtan bir izleme toplayın
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 hello.exe ile arg1 başlatılır arg2 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 profiles 'dotnet-common' + 'dotnet-sampled-thread-time'.
Provider Name Keywords Level Enabled By
Microsoft-Windows-DotNETRuntime 0x000000100003801D Informational(4) --profile
Microsoft-DotNETCore-SampleProfiler 0x0000F00000000000 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 <Enter> tuşuna basarak <Ctrl + C> izlemeyi toplamayı durdurabilirsiniz. Bunu yaptığınızda da uygulamasından çıkılır hello.exe.
Not
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
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.
Aşağıdaki
dotnet-tracekomut adlımyport.sockbir tanılama yuvası oluşturur ve bağlantı bekler.dotnet-trace collect --diagnostic-port myport.sockÇıktı:
Waiting for connection on myport.sock Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sockAyrı bir konsolda, ortam değişkeni
DOTNET_DiagnosticPortsçıkıştakidotnet-tracedeğere ayarlanmış şekilde hedef uygulamayı başlatın.export DOTNET_DiagnosticPorts=/home/user/myport.sock ./my-dotnet-app arg1 arg2Bu, izlemeyi
dotnet-tracebaşlatmak için etkinleştirilmelidirmy-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.Önemli
dotnet rundotnet CLI'sı uygulamanız olmayan ve uygulamanızdan önce bağlanabilendotnet-tracebirçok alt işlem ortaya çıkarabileceğinden uygulamanızın başlatılması sorun olabilir ve bu işlem uygulamanızı çalışma zamanında askıya alınmış durumda bırakır. Doğrudan uygulamanın bağımsız bir sürümünü kullanmanız veya uygulamayı başlatmak için kullanmanızdotnet execönerilir.
(Yalnızca Linux) dotnet-trace kullanarak makine genelinde izleme toplama
Bu örnek, makinedeki tüm işlemler için CPU örneklerini yakalar. .NET 10+ çalıştıran tüm işlemler GC, JIT ve Derleme yükleme davranışını açıklayan bazı ek basit olayları da içerir.
$ sudo dotnet-trace collect-linux
==========================================================================================
The collect-linux verb is a new preview feature and relies on an updated version of the
.nettrace file format. The latest PerfView release supports these trace files but other
ways of using the trace file may not work yet. For more details, see the docs at
https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace.
==========================================================================================
No providers, profiles, ClrEvents, or PerfEvents were specified, defaulting to trace profiles 'dotnet-common' + 'cpu-sampling'.
Provider Name Keywords Level Enabled By
Microsoft-Windows-DotNETRuntime 0x000000100003801D Informational(4) --profile
Linux Perf Events Enabled By
cpu-sampling --profile
Output File : <path-to-nettrace>trace_20251008_181939.nettrace
[00:00:00:03] Recording trace.
Press <Enter> or <Ctrl-C> to exit...
Recording stopped.
Resolving symbols.
Finished recording trace.
Trace written to <path-to-nettrace>trace_20251008_181939.nettrace
Birden çok .NET sürümünün yüklü olduğu ortamlardacollect-linux çalışmak bir .NET işleminin collect-linux ile izlenip izlenemeyeceğinin fark edilmeye yardımcı olur.
$ dotnet-trace collect-linux --probe
==========================================================================================
The collect-linux verb is a new preview feature and relies on an updated version of the
.nettrace file format. The latest PerfView release supports these trace files but other
ways of using the trace file may not work yet. For more details, see the docs at
https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace.
==========================================================================================
Probing .NET processes for support of the EventPipe UserEvents IPC command used by collect-linux. Requires runtime '10.0.0' or later.
.NET processes that support the command:
3802935 MyApp
.NET processes that do NOT support the command:
3809123 dotnet - Detected runtime: '10.0.0-rc.1.25451.107'
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 nettracearasında speedscope seçim yapabilirsiniz. seçeneği -f speedscope bir dotnet-trace dosya üretmesini sağlarspeedscope.
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.
Not
.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.
Uzun komutlar yazmamak için .rsp dosyasını kullanın
Geçirebileceğiniz bağımsız değişkenleri içeren bir dotnet-trace dosyayla başlatabilirsiniz.rsp. 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