.NET Core'da hangi tanılama araçları kullanılabilir?
Yazılım her zaman beklediğiniz gibi davranmaz, ancak .NET Core'da bu sorunları hızlı ve etkili bir şekilde tanılamanıza yardımcı olacak araçlar ve API'ler vardır.
Bu makale, ihtiyacınız olan çeşitli araçları bulmanıza yardımcı olur.
Hata ayıklayıcı
Hata ayıklayıcılar programınızla etkileşim kurmanızı sağlar. Duraklatma, artımlı olarak yürütme, inceleme ve devam ettirmek, kodunuzun davranışı hakkında içgörü sağlar. Hata ayıklayıcı, kolayca yeniden oluşturulabilecek işlevsel sorunları tanılamak için iyi bir seçimdir.
Birim testi
Birim testi , yüksek kaliteli yazılımların sürekli tümleştirilmesi ve dağıtımının önemli bir bileşenidir. Birim testleri, bir şeyi kırdığınızda size erken uyarı verecek şekilde tasarlanmıştır.
Gözlemlenebilirlik için izleme
.NET ölçümleri, günlükleri ve dağıtılmış izlemeleri kullanarak endüstri standardı izleme tekniklerini destekler. İzleme, bir yazılım projesine ne yaptığını kaydetmek için eklenen koddur. Bu bilgiler daha sonra dosyalarda, veritabanlarında veya bellek içinde toplanabilir ve bir yazılım programının nasıl çalıştığını anlamak için analiz edilebilir. Bu genellikle üretim ortamlarında sorunları izlemek ve bunları tanılamak için kullanılır. .NET çalışma zamanı isteğe bağlı olarak etkinleştirilebilen yerleşik izleme özelliğine ve uygulamanız için özelleştirilmiş özel izleme eklemenize olanak sağlayan API'lere sahiptir.
Ölçümler
Ölçümler , uygulama performansını ve sistem durumunu izlemek için zaman içinde kaydedilen sayısal ölçümlerdir. Ölçümler genellikle olası sorunlar algılandığında uyarı oluşturmak için kullanılır. Ölçümlerin performans yükü çok düşüktür ve birçok hizmet bunları her zaman açık telemetri olarak yapılandırır.
Günlükler
Günlüğe kaydetme , kodun program çalışırken gerçekleşen ilginç olayların bir kaydı olan bir günlük oluşturmak için izlendiği bir tekniktir. Genellikle bir günlük olayları temel kümesi varsayılan olarak yapılandırılır ve belirli sorunları tanılamak için isteğe bağlı olarak daha kapsamlı günlük etkinleştirilebilir. Performans yükü, günlüğe kaydedilen veri miktarına bağlı olarak değişkendir.
Dağıtılmış izlemeler
Dağıtılmış İzleme , birden çok makine veya işlem arasında dağıtılan uygulamalardaki hataları ve performans sorunlarını yerelleştirmenize yardımcı olan özel bir günlük kaydı biçimidir. Bu teknik, farklı uygulama bileşenleri tarafından yapılan işleri bir arada ilişkilendiren ve eşzamanlı istekler için uygulamanın yaptığı diğer işlerden ayıran bir uygulama aracılığıyla istekleri izler. Performans ek yüküne bağlı olarak isteğe bağlı olarak her isteğin ve örneklemenin çalıştırılması mümkündür.
Dökümler
Döküm, oluşturma sırasında işlemin anlık görüntüsünü içeren bir dosyadır. Bunlar hata ayıklama amacıyla uygulamanızın durumunu incelemek için yararlı olabilir.
Simgeleri
Simgeler , kaynak kod ile derleyici tarafından üretilen ikili kod arasındaki eşlemedir. Bunlar genellikle .NET hata ayıklayıcıları tarafından kaynak satır numaralarını, yerel değişken adlarını ve diğer tanılama bilgileri türlerini çözümlemek için kullanılır.
Kapsayıcılarda tanılama toplama
Kapsayıcılı olmayan Linux ortamlarında kullanılan tanılama araçları, kapsayıcılardaki tanılamaları toplamak için de kullanılabilir. Araçların bir Docker kapsayıcısında çalışmasını sağlamak için yalnızca birkaç kullanım değişikliği gerekir.
.NET Core tanılama genel araçları
dotnet-counters
dotnet-counters , birinci düzey sistem durumu izleme ve performans araştırması için bir performans izleme aracıdır. API aracılığıyla EventCounter yayımlanan performans sayacı değerlerini gözlemler. Örneğin, CPU kullanımı veya .NET Core uygulamanızda oluşan özel durumların oranı gibi öğeleri hızla izleyebilirsiniz.
dotnet-dump
dotnet-dump aracı, yerel hata ayıklayıcı olmadan Windows ve Linux çekirdek dökümlerini toplayıp analiz etmenin bir yoludur.
dotnet-gcdump
dotnet-gcdump aracı, canlı .NET işlemlerinin GC (Çöp Toplayıcı) dökümlerini toplamanın bir yoludur.
dotnet-trace
.NET Core, tanılama verilerinin EventPipe
kullanıma sunulduğu adı içerir. dotnet-trace aracı, uygulamaların yavaş çalışmasına neden olmanıza neden olan senaryolarda yardımcı olabilecek ilginç profil oluşturma verilerini uygulamanızdan kullanmanıza olanak tanır.
dotnet-stack
dotnet-stack aracı, çalışan bir .NET işlemindeki tüm iş parçacıkları için yönetilen yığınları hızla yazdırmanızı sağlar.
dotnet-symbol
dotnet-symbol , çekirdek dökümünü veya mini dökümü açmak için gereken dosyaları (semboller, DAC/DBI, konak dosyaları vb.) indirir. Farklı bir makinede yakalanan döküm dosyasında hata ayıklamak için simgelere ve modüllere ihtiyacınız varsa bu aracı kullanın.
dotnet-sos
dotnet-sos, SOS hata ayıklama uzantısını Linux ve macOS'a (ve Windbg/cdb kullanıyorsanız Windows) yükler.
PerfCollect
PerfCollect, Linux dağıtımlarında çalışan .NET uygulamalarının daha ayrıntılı performans analizi için ve LTTng
ile perf
izlemeleri toplamak için kullanabileceğiniz bir bash betiğidir.
.NET Core tanılama öğreticileri
Kendi tanılama aracınızı yazma
Tanılama istemci kitaplığı, tanılama senaryonuz için en uygun olan kendi özel tanılama aracınızı yazmanızı sağlar. Microsoft.Diagnostics.NETCore.Client API başvurusunda bilgileri arayın.
Bellek sızıntısında hata ayıklama
Öğretici: Bellek sızıntısında hata ayıklama, bellek sızıntısını bulma adımlarını gösterir. Sızıntıyı onaylamak için dotnet-counters aracı ve sızıntıyı tanılamak için dotnet-dump aracı kullanılır.
Yüksek CPU kullanımı hatasını ayıklama
Öğretici: Yüksek CPU kullanımında hata ayıklama , yüksek CPU kullanımını araştırma konusunda size yol gösterir. Yüksek CPU kullanımını onaylamak için dotnet-counters aracını kullanır. Ardından CPU kullanım profilini toplamak ve görüntülemek için Performans analizi için izleme yardımcı programını (dotnet-trace
) veya Linux'ı perf
kullanma işleminde size yol gösterir.
Çıkmaz hatasını ayıklama
Öğretici: Hata ayıklama kilitlenmesi , dotnet-dump aracını kullanarak iş parçacıklarını ve kilitleri araştırmayı gösterir.
ThreadPool AçlığıNda Hata Ayıklama
Öğretici: ThreadPool'da hata ayıklama gereksinimi , ThreadPool'un aç kalma durumuyla ilgili araştırma yapmak için dotnet-counters ve dotnet-stack araçlarının nasıl kullanılacağını gösterir.
StackOverflow hata ayıklama
Öğretici: StackOverflow'da hata ayıklama , Linux'ta hata ayıklamayı StackOverflowException gösterir.
Linux dökümlerinin hatasını ayıklama
Linux dökümlerinde hata ayıklama, Linux'ta dökümlerin nasıl toplanacağını ve analiz edileceğini açıklar.
EventCounters kullanarak performansı ölçme
Öğretici: .NET'te EventCounters kullanarak performansı ölçme, .NET uygulamanızdaki performansı ölçmek için API'nin nasıl kullanılacağını EventCounter gösterir.