Aracılığıyla paylaş


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