Alıştırma - Günlüğe kaydetme ve izleme

Tamamlandı

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.

  1. Dosyanın en üstüne Program.cs, using yöntemlerini kullanabilmek için yeni bir System.Diagnostics deyimi ekleyin Debug.

    using System.Diagnostics;
    
  2. Kodda hata ayıklarken netlik sağlamak için yöntemin başlangıcına WriteLine deyimler ekleyin Fibonacci.

    Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
    Debug.WriteLine($"We are looking for the {n}th number");
    
  3. Döngümüz for sonunda her değeri çıktı olarak verebiliriz. Alternatif olarak, WriteIf veya WriteLineIf kullanarak bir koşullu yazdırma deyimi kullanabiliriz. Yalnızca sum, 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}");    
    }
    
  4. 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!