Alıştırma - Günlüğe kaydetme ve izleme
Uygulama geliştirmeye başladığına göre, geliştiricilerin yeni özellikler eklemesine yardımcı olmak için mantığa daha fazla tanılama eklemek iyi bir seçenektir. Bu görevi gerçekleştirmek için yeni hata ayıklama tanılama bilgilerimizi kullanabiliriz.
Hata ayıklama konsoluna yazma
Uygulamada hata ayıklamadan önce daha fazla hata ayıklama tanılaması ekleyelim. Ek tanılamalar, hata ayıklama altında çalıştırılırken uygulamanın tanılanmasını sağlar.
Program.cs dosyasının en üstüne, using yöntemlerini kullanabilmek için System.Diagnostics getirmek için yeni bir Debug deyimi ekleyeceğiz.
using System.Diagnostics;
Kodda hata ayıklarken netlik elde etmek için WriteLine yönteminin başlangıcına bir Fibonacci deyimi ekleyin.
Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
Debug.WriteLine($"We are looking for the {n}th number");
for döngüsünün sonunda her değeri yazdırabiliriz. Yalnızca WriteIf for döngüsünün sonunda 1 olduğunda yazdırma satırı eklemek için WriteLineIf veya sum kullanarak koşullu yazdırma deyimi de kullanabiliriz:
for (int i = 2; i <= n; i++)
{
sum = n1 + n2;
n1 = n2;
n2 = sum;
Debug.WriteLineIf(sum == 1, $"sum is 1, n1 is {n1}, n2 is {n2}");
}
Uygulamada hata ayıkladığınızda aşağıdaki çıkışı almanız gerekir:
Entering Fibonacci method
We are looking for the 5th number
sum is 1, n1 is 1, n2 is 1
Assert ile koşulları kontrol et
Bazı durumlarda, belirli bir koşul karşılanmadığında çalışan uygulamanın tamamını durdurmak isteyebilirsiniz.
Debug.Assertkullanarak bir koşul olup olmadığını denetleyerek uygulamanın durumu hakkında ek bilgiler çıktısı alabilirsiniz. N2 değerinin 5 olduğundan emin olmak için return deyiminden hemen önce bir denetim ekleyelim.
// If n2 is 5 continue, else break.
Debug.Assert(n2 == 5, "The return value is not 5 and it should be.");
return n == 0 ? n1 : n2;
Uygulama mantığımız zaten doğru olduğundan, Fibonacci(5); farklı bir sonuç elde edecek olan Fibonacci(6);olarak güncelleştirelim.
Uygulamada hata ayıklama. Kodda Debug.Assert çalıştırıldığında hata ayıklayıcı, değişkenleri, izleme penceresini, çağrı yığınını ve daha fazlasını inceleyebilmeniz için uygulamayı durdurur. Ayrıca iletiyi hata ayıklama konsoluna gönderir.
---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
The return value is not 5 and it should be.
---- Assert Long Message ----
at Program.<<Main>$>g__Fibonacci|0_0(Int32 n) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 23
at Program.<Main>$(String[] args) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 3
Hata ayıklamayı durdurun ve terminale aşağıdaki komutu girerek hata ayıklama olmadan uygulamayı çalıştırın.
dotnet run
Onay başarısız olduktan ve bilgiler uygulama çıkışına kaydedildikten sonra uygulama sonlandırılır.
Process terminated. Assertion failed.
The return value is not 5 and it should be.
at Program.<<Main>$>g__Fibonacci|0_0(Int32 n) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 23
at Program.<Main>$(String[] args) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 3
Şimdi uygulamayı terminalde aşağıdaki komutla Release yapılandırmasında çalıştıralım.
dotnet run --configuration Release
Artık Debug yapılandırmasında olmadığımız için uygulama başarıyla çalışır ve tamamlanır.
Tebrikler, Debug.WriteLine ve Debug.Assertiçeren .NET özelliklerini kullanarak kodun hatalarını başarıyla ve verimli bir şekilde ayıkladiniz. Bravo!