Ćwiczenie — rejestrowanie i śledzenie
Teraz, gdy aplikacja rozpoczęła tworzenie aplikacji, warto dodać więcej diagnostyki do logiki, aby pomóc deweloperom w dodawaniu nowych funkcji. Możemy użyć naszej nowej wiedzy na temat diagnostyki debugowania, aby wykonać to zadanie.
Zapisywanie w konsoli debugowania
Przed debugowaniem aplikacji dodajmy więcej diagnostyki debugowania. Dodatkowa diagnostyka pomoże zdiagnozować aplikację podczas jej uruchamiania w ramach debugowania.
W górnej Program.cs
części pliku dodamy nową using
instrukcję, aby wprowadzić System.Diagnostics
metodę Debug
.
using System.Diagnostics;
Dodaj instrukcję WriteLine
na początku Fibonacci
metody, aby uzyskać jasność podczas debugowania kodu.
Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
Debug.WriteLine($"We are looking for the {n}th number");
Na końcu for
pętli możemy wyświetlić każdą wartość. Możemy również użyć warunkowej instrukcji drukowania przy użyciu polecenia WriteIf
lub WriteLineIf
dodać wiersz wydruku tylko wtedy, gdy sum
wartość 1 znajduje się na końcu pętli 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}");
}
Debuguj aplikację i pobierz następujące dane wyjściowe:
Entering Fibonacci method
We are looking for the 5th number
sum is 1, n1 is 1, n2 is 1
Sprawdzanie warunków za pomocą potwierdzenia
W niektórych sytuacjach możesz zatrzymać całą uruchomioną aplikację, gdy określony warunek nie zostanie spełniony. Za pomocą polecenia Debug.Assert
można sprawdzić warunek i wyświetlić dodatkowe informacje o stanie aplikacji. Dodajmy sprawdzanie bezpośrednio przed instrukcją return, aby upewnić się, że n2 ma wartość 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;
Nasza logika aplikacji jest już poprawna, więc zaktualizujmy wartość Fibonacci(5);
Fibonacci(6);
, która będzie miała inny wynik.
Debugowanie aplikacji. Po Debug.Assert
uruchomieniu w kodzie debuger zatrzymuje aplikację, aby można było sprawdzić zmienne, okno kontrolne, stos wywołań i nie tylko. Zwraca również komunikat do konsoli debugowania.
---- 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
Zatrzymaj debugowanie, a następnie uruchom aplikację bez debugowania, wprowadzając następujące polecenie w terminalu.
dotnet run
Aplikacja zostanie zakończona po tym, jak potwierdzenie nie powiodło się, a informacje zostały zarejestrowane w danych wyjściowych aplikacji.
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
Teraz uruchomimy aplikację w Release
konfiguracji przy użyciu następującego polecenia w terminalu.
dotnet run --configuration Release
Aplikacja została pomyślnie uruchomiona do ukończenia, ponieważ nie jesteśmy już w Debug
konfiguracji.
Gratulacje, kod został pomyślnie i skutecznie debugowany przy użyciu funkcji platformy .NET, które obejmują Debug.WriteLine
i Debug.Assert
. Gotowe!