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 başka hata ayıklama tanılamaları ekleyelim. Daha fazla tanılama, hata ayıklama altında çalıştırılırken uygulamanın tanılanmasını sağlayabilir.
Dosyanın en üstüne
Program.cs,usingyöntemlerini kullanabilmek için yeni birSystem.Diagnosticsdeyimi ekleyinDebug.using System.Diagnostics;Kodda hata ayıklarken netlik sağlamak için yöntemin başlangıcına
WriteLinedeyimler ekleyinFibonacci.Debug.WriteLine($"Entering {nameof(Fibonacci)} method"); Debug.WriteLine($"We are looking for the {n}th number");Döngümüz
forsonunda her değeri çıktı olarak verebiliriz. Alternatif olarak,WriteIfveyaWriteLineIfkullanarak bir koşullu yazdırma deyimi kullanabiliriz. Yalnızcasum, for döngüsünün sonunda 1 olduğunda bir satıra yazdırma işlemi ekleyin.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ıklayın. Aşağıdaki çıkışı almalısınız:
Entering Fibonacci method We are looking for the 5th number sum is 1, n1 is 1, n2 is 1
Assert ile koşulları denetleme
Bazı durumlarda belirli bir koşul karşılanmadığında, çalışmakta olan uygulamanın tamamını durdurmanız faydalı olabilir.
Debug.Assert kullanarak, belirli bir koşulu denetleyebilir ve uygulamanın durumu hakkında ek bilgiler edinebilirsiniz. n2 değerinin 5 olduğundan emin olmak için return deyiminden önce bir denetim işlemi 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, bu nedenle farklı bir sonuç oluşturan öğesini Fibonacci(5); olarak Fibonacci(6);güncelleştirelim.
Uygulamada hata ayıklayın. Kodda Debug.Assert çalıştırıldığında değişkenleri, izleme penceresini, çağrı yığınını ve daha fazlasını inceleyebilmeniz için hata ayıklayıcının uygulamayı durdurduğuna dikkat edin. Ayrıca, hata ayıklama konsoluna bir ileti 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, ardından 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ı Release yapılandırmasında terminalde bulunan şu kodla çalıştıralım.
dotnet run --configuration Release
Artık Debug yapılandırmasında olmadığımızdan, uygulama başarılı bir şekilde tamamlanır.
Tebrikler, Debug.WriteLine ve Debug.Assert dahil .NET özelliklerini kullanarak kod hatalarını başarıyla ve verimli bir şekilde ayıkladınız. Tebrikler!