Harjoitus – kirjaaminen ja jäljitys
Nyt kun sovellus on alkanut kehittää, logiikkaan on hyvä lisätä diagnostiikkaa, joka auttaa kehittäjiä lisäämään uusia ominaisuuksia. Voimme käyttää uutta tietämystämme vianmäärityksestä tämän tehtävän suorittamiseen.
Virheenkorjauskonsoliin kirjoittaminen
Ennen kuin korjaamme sovelluksen virheenkorjauksen, lisätään vianmääritystä. Lisädiagnostiikka auttaa sovelluksen diagnosoinnissa virheenkorjauksen aikana.
Program.cs tiedoston yläreunaan lisätään uusi using-lauseke, joka tuodaan System.Diagnostics, jotta voimme käyttää Debug-menetelmiä.
using System.Diagnostics;
Lisää WriteLine-lauseke Fibonacci-menetelmän alkuun selkeyttääksesi koodin virheenkorjausta.
Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
Debug.WriteLine($"We are looking for the {n}th number");
for lopussa voimme tulostaa jokaisen arvon. Voimme myös käyttää ehdollista tulostuslauseketta käyttämällä WriteIf tai WriteLineIf tulostusrivin lisäämiseksi vain, kun sum on 1 silmukan lopussa:
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}");
}
Korjaa sovelluksen virheenkorjaus, niin tuloste tulee seuraavanlaiseksi:
Entering Fibonacci method
We are looking for the 5th number
sum is 1, n1 is 1, n2 is 1
Ehtojen tarkistus Vahvista-toiminnolla
Joissakin tilanteissa haluat ehkä pysäyttää koko käynnissä olevan sovelluksen, kun tietty ehto ei täyty. käyttämällä Debug.Assertvoit tarkistaa ehdon ja tulostaa lisätietoja sovelluksen tilasta. Lisätään tarkistus heti ennen palautuslauseketta varmistaaksemme, että n2 on 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;
Sovelluslogiikkamme on jo oikein, joten päivitämme Fibonacci(5);Fibonacci(6);, jolla on eri tulos.
Korjaa sovelluksen virheenkorjaus. Kun Debug.Assert suoritetaan koodissa, virheenkorjaus pysäyttää sovelluksen, jotta voit tarkastaa muuttujat, kelloikkunan, puhelupinon ja paljon muuta. Se myös tulostaa sanoman virheenkorjauskonsoliin.
---- 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
Lopeta virheenkorjaus ja suorita sovellus ilman virheenkorjausta antamalla seuraava komento päätteessä.
dotnet run
Sovellus lopetetaan, kun vahvistus on epäonnistunut ja tiedot on kirjattu sovellustulosteeseen.
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
Suoritetaan seuraavaksi sovellus Release määritys käyttämällä päätetiedostossa seuraavaa komentoa.
dotnet run --configuration Release
Sovellus suoritetaan onnistuneesti loppuun, koska emme ole enää Debug määrityksissä.
Onneksi olkoon, koodi on korjattu onnistuneesti ja tehokkaasti käyttämällä .NET-ominaisuuksia, jotka sisältävät Debug.WriteLine ja Debug.Assert. Hyvin tehty!