Latihan - Pengelogan dan pelacakan
Sekarang setelah aplikasi memulai pengembangan, ada baiknya untuk menambahkan lebih banyak diagnostik ke logika untuk membantu pengembang saat mereka menambahkan fitur baru. Kita dapat menggunakan pengetahuan baru tentang diagnostik debug untuk menyelesaikan tugas ini.
Tulis ke konsol debug
Sebelum men-debug aplikasi, mari kita tambahkan lebih banyak diagnostik debug. Diagnostik tambahan akan membantu mendiagnosis aplikasi saat dijalankan di bawah debug.
Di bagian atas file Program.cs, kita akan menambahkan pernyataan using baru untuk membawa System.Diagnostics sehingga kita dapat menggunakan metode Debug.
using System.Diagnostics;
Tambahkan pernyataan WriteLine di awal metode Fibonacci untuk mendapatkan kejelasan saat Anda men-debug melalui kode.
Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
Debug.WriteLine($"We are looking for the {n}th number");
Pada akhir perulangan for kami, kita bisa mencetak setiap nilai. Kita juga dapat menggunakan pernyataan cetak bersyarat dengan menggunakan WriteIf atau WriteLineIf untuk menambahkan baris cetak hanya ketika sum adalah 1 di akhir perulangan for.
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}");
}
Debug aplikasi dan Anda harus mendapatkan output berikut:
Entering Fibonacci method
We are looking for the 5th number
sum is 1, n1 is 1, n2 is 1
Periksa kondisi dengan Assert
Dalam beberapa situasi, Anda mungkin ingin menghentikan seluruh aplikasi yang sedang berjalan saat kondisi tertentu tidak terpenuhi. Dengan menggunakan Debug.Assert, Anda dapat memeriksa kondisi dan menghasilkan informasi tambahan tentang status aplikasi. Mari kita tambahkan pemeriksaan tepat sebelum pernyataan pengembalian untuk memastikan n2 adalah 5.
// 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;
Logika aplikasi kami sudah benar, jadi mari kita perbarui Fibonacci(5); kita ke Fibonacci(6);, yang akan memiliki hasil yang berbeda.
Debug aplikasi. Ketika Debug.Assert dijalankan dalam kode, debugger menghentikan aplikasi sehingga Anda dapat memeriksa variabel, jendela pengawasan, tumpukan panggilan, dan banyak lagi. Ini juga menghasilkan pesan ke konsol debug.
---- 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
Hentikan debugging, kemudian jalankan aplikasi tanpa debug dengan memasukkan perintah berikut di terminal.
dotnet run
Aplikasi dihentikan setelah pernyataan gagal dan informasi telah dicatat ke output aplikasi.
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
Sekarang, mari kita jalankan aplikasi dalam konfigurasi Release dengan perintah berikut di terminal.
dotnet run --configuration Release
Aplikasi berhasil berjalan hingga selesai karena kita tidak lagi dalam konfigurasi Debug.
Selamat, Anda telah berhasil dan secara efisien men-debug kode dengan menggunakan fitur .NET, yang mencakup Debug.WriteLine dan Debug.Assert. Bagus!