CodeGym/Java blog/Tilfældig/Fejlretning i IntelliJ IDEA: en begyndervejledning
John Squirrels
Niveau
San Francisco

Fejlretning i IntelliJ IDEA: en begyndervejledning

Udgivet i gruppen
Hej alle i CodeGym-fællesskabet! Lad os i dag tale om fejlretning — hvad er det, og hvordan fejlfindes i IntelliJ IDEA. Denne artikel er beregnet til personer, der allerede har et minimumskendskab til Java Core. Der vil ikke være nogen rammer eller komplicerede procedurer til at udgive biblioteker. En afslappet spadseretur. Så gør dig godt tilpas, og lad os komme i gang! Fejlretning i IntelliJ IDEA: en begyndervejledning - 1

Hvorfor du har brug for fejlretningstilstand

Lad os straks afklare noget for os selv: Der er ingen kode uden fejl... Sådan fungerer livet bare. Så vi bør ikke falde i stykker og give op, hvis vores kode ikke virker, som vi havde forventet. Men hvad skal vi gøre? Nå, vi kunne placere System.out.printlnsætninger overalt og derefter finkæmme konsoloutputtet i håb om at finde en fejl. Når det er sagt, kan du (og det gør folk) fejlfinde ved hjælp af omhyggelig logning. Men hvis du kan køre din kode på en lokal maskine, er det bedre at bruge Debug- tilstand. Jeg vil med det samme bemærke, at vi i denne artikel vil overveje at fejlfinde et projekt ved hjælp af IntelliJ IDEA.

Hvad er fejlretningstilstand?

Debug-tilstand er til fejlretning (kontrol af) kørende kode. Det gør det muligt for dig at stoppe henrettelse på udpegede steder og se på, hvordan tingene skrider frem. Det lader dig forstå programmets tilstand på et bestemt sted i koden. Det er ligesom at kunne stoppe uret og se det hele fra siden. Fedt, ikke? Vores mål er hurtigt og nemt at lære, hvordan man fejlretter applikationer ved hjælp af vores elskede IntelliJ IDEA-udviklingsmiljø.

Hvad du skal bruge for at begynde at fejlfinde

Her er nogle gratis råd: mens du læser denne artikel, så gør alt, hvad der vil blive beskrevet her - du har alt, hvad du behøver for at følge med. Hvad du har brug for:
  1. IntelliJ IDEA version 2019.3.1 eller nyere. Hvis nogen ikke har dette, er her et link, hvor du kan downloade det . Download Community Edition - det er den version, jeg vil bruge.
  2. Klon dette GitHub-projekt og importer det gennem IDEA.
Åbn IDEA: Fejlretning i IntelliJ IDEA: en begyndervejledning - 2Vælg debug- præsentationsprojektet, og tryk på OK . Så vil du se følgende vindue: Fejlretning i IntelliJ IDEA: en begyndervejledning - 3Lad de valgte muligheder: Importer projekt fra eksterne kilder og Maven . Klik på Udfør . Nu hvor vi har importeret projektet, kan vi beskrive resten af ​​processen med et levende eksempel.

Bare lidt teori... Jeg lover :D

For at begynde at fejlfinde selv en lille smule, skal du forstå, hvad et brudpunkt er, og være bekendt med et par genvejstaster. Et brudpunkt er en speciel markør, der angiver, hvor du ønsker, at eksekveringen af ​​applikationen skal stoppe, eventuelt baseret på applikationstilstanden. Du kan indstille et brudpunkt enten ved at venstreklikke på venstre sidepanel eller ved at klikke på kodeplaceringen og trykke på Ctrl+F8 . Lad os se på tre typer brudpunkter: linjebrudpunkter, feltovervågningspunkter og og metodebrudpunkter. Sådan ser det ud:
  • På en linje:

    Fejlretning i IntelliJ IDEA: en begyndervejledning - 4

    Hvis en sætning har et lambda-udtryk, beder IDEA dig om at vælge, om du vil sætte brudpunktet på hele sætningen eller specifikt på lambda-udtrykket:

    Fejlretning i IntelliJ IDEA: en begyndervejledning - 5
  • Om en metode:

    Fejlretning i IntelliJ IDEA: en begyndervejledning - 6
  • På en klasse:

    Fejlretning i IntelliJ IDEA: en begyndervejledning - 7
Breakpoints kan fjernes ved at følge de samme trin, som bruges til at tilføje dem. Der er situationer, hvor du vil inaktivere (mute) dem. For at gøre dette skal du finde Fejlretning i IntelliJ IDEA: en begyndervejledning - 8ikonet i sektionen Debug. Dette vil slå alle breakpoints fra. For at se hvilke brudpunkter der er sat, kan du enten gå til Fejlfindingssektionen i nederste venstre hjørne og finde ikonet Fejlretning i IntelliJ IDEA: en begyndervejledning - 9, eller trykke på Ctrl+Shift+F8 : Fejlretning i IntelliJ IDEA: en begyndervejledning - 10Flytter vi til listen over brudpunkter, vil vi se følgende: Fejlretning i IntelliJ IDEA: en begyndervejledning - 11Der er to brudpunkter her:
  • Bee.java:24 — i Bee-klassen på linje 24
  • Main.java:14 — i hovedklassen på linje 14
Bemærk venligst, at disse brudpunkter ikke indstilles automatisk, hvis du har klonet projektet: du skal selv indstille dem! Der er også en Java Exception Breakpoints sektion. Det er meget nyttigt. Her kan du tilføje et implicit brudpunkt, så programmet stopper, før du kaster en undtagelse eller en specifik undtagelse. Vi tilføjer et implicit brudpunkt for RuntimeException. Dette er nemt at gøre. Find "+"-ikonet i øverste venstre hjørne. Klik på den og vælg Java Exception Breakpoints : Fejlretning i IntelliJ IDEA: en begyndervejledning - 12Skriv navnet på den undtagelse, du vil tilføje, i vinduet, som du vil tilføje, vælg fra listen og klik OK : Fejlretning i IntelliJ IDEA: en begyndervejledning - 13Det afslutter vores primer om, hvordan man sætter tingene op, så nu skal vi' Jeg vil øve mig.

Lad os gå i gang med det, der hedder debugging!

Jeg kommer fra en lang række familiebiavlere, så det projekt, jeg lavede for at illustrere fejlfinding, beskriver modeller af processen med bier, der samler nektar, forarbejder nektar til honning og derefter får honning fra bikuben. Ifølge dokumentationen README-fil, som findes i projektets rodmappe, er den forventede adfærd for alle blomster, hvorfra nektar indsamles, at mængden af ​​opsamlet honning (som har form af en dobbelt ) er lig med halvdelen af den opsamlede nektar. Projektet har følgende klasser:
  • Bi - en almindelig arbejdsbi
  • BeeQueen - bidronningen
  • BeeHive — bikuben
  • HoneyPlant - en honningplante (nektarkilde), hvorfra nektar opsamles
  • Main — det er her public static void main(), vi finder metoden, hvor udførelsen starter.
Hvis vi kører main()metoden, så finder vi ud af, at vores program ikke kun beregner mængden af ​​honning, det giver også en undtagelse... Fejlretning i IntelliJ IDEA: en begyndervejledning - 14Vi skal undersøge og fastslå, hvad problemet er. Fra sporstakken i nederste højre hjørne kan vi se, at der i en RuntimeException blev kastet på HoneyPlant.java:20: Fejlretning i IntelliJ IDEA: en begyndervejledning - 15Det var lige det, vi talte om ovenfor. Lad os holde øje med denne RuntimeException ved at køre main()metoden i fejlretningstilstand. For at gøre dette skal du klikke på den grønne trekantpil i IntelliJ IDEA ud for metoden main(). Fejlretning i IntelliJ IDEA: en begyndervejledning - 16Som et resultat vil vi få programmet stoppet i øjeblikket lige før undtagelsen kastes, og vi vil se dette ikon: Fejlretning i IntelliJ IDEA: en begyndervejledning - 17Fejlretning i IntelliJ IDEA: en begyndervejledning - 18For at få alle tilgængelige oplysninger, skal vi kigge i Fejlfindingssektionen. Den har en Variablesrude, der viser alle tilgængelige variabler i denne del af applikationen:
  • nektar = 1,0;
  • nektarKapacitet = -1,0.
At smide undtagelsen giver mening, for en honningplante kan ikke have en negativ mængde nektar. Men hvorfor sker det? Når alt kommer til alt, kontrollerer vi i linje 15-17, om nektarforsyningen er opbrugt og returnerer nul, hvis det er:
if (nectar == 0) {
   	     return 0;
}
Men problemet er, at vi tjekker den forkerte variabel. Dette er en fejl i koden. I stedet for at tjekke mængden af ​​tilgængelig nektar i blomsten (som er gemt i variablen nectarCapacity ), tjekker programmet værdien af ​​metodens nektarparameter , som er mængden af ​​nektar, som vi ønsker at tage fra blomsten. Her er det! Vores første fejl! Efter at have rettet dette, får vi følgende kode:
if (nectarCapacity == 0) {
   	     return 0;
}
Kør nu main()metoden på normal vis (Run 'Main.main()'). Der er ingen undtagelse, og programmet virker: Fejlretning i IntelliJ IDEA: en begyndervejledning - 19Applikationen kører til færdiggørelse og giver følgende svar:
"33.0 honey was produced by 7 bees from 2 honey plants"
Alt ville være fint nu, men dette svar er forkert... Ifølge dokumentationen README-filen omdannes nektar til honning i forholdet 2 til 1:
## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Hovedmetoden har helt klart to honningplanter med henholdsvis 30 og 40 enheder nektar. Så vi skulle i sidste ende ende med 35 enheder honning. Men programmet fortæller os, at vi får 33. Hvor blev de to andre enheder af? Lad os finde ud af det! For at gøre dette skal du indstille et brudpunkt i Main.main()metoden på linje 28, hvor beeHive.populateHoney()der kaldes og køre main()metoden i fejlretningstilstand: Fejlretning i IntelliJ IDEA: en begyndervejledning - 20Vi vil overveje dette punkt mere detaljeret. Programmet stoppede med at eksekvere før afvikling af linje 28. I den nederste del ser vi sektionen Debug, som viser al tilgængelig information om den kørende applikation. Som allerede nævnt indeholder ruden Variabler alle variabler og objekter, der er tilgængelige fra denne del af applikationen. Ruden Frames viser de trin, som applikationen gennemgår - du kan se på tidligere (frames) trin og se alle de lokale data. For at fortsætte med at køre programmet kan du trykke på F9 eller det grønne ikon, som vist nedenfor: Fejlretning i IntelliJ IDEA: en begyndervejledning - 21For at stoppe programmet skal du klikke på den røde firkant: Fejlretning i IntelliJ IDEA: en begyndervejledning - 22For at genstarte programmet i fejlretningstilstand skal du klikke på pilen: Fejlretning i IntelliJ IDEA: en begyndervejledning - 23Yderligere kan du fortsætte gennem ansøgning trin for trin ved hjælp af to taster:
  • F8 — Gå gennem koden uden at træde ind i metoder;
  • F7 — Gå gennem kode og gå ind i metoder.
I vores tilfælde skal vi trykke på F7 for at træde ind i beeHive.populateHoney()metoden. Når vi træder ind i det, får vi: Fejlretning i IntelliJ IDEA: en begyndervejledning - 24Nu vil vi bruge F8 til at træde gennem denne metode og beskrive, hvad der sker i den:
  • Linje 25 — Stream API'et bruges til at indsamle nektar fra alle bierne
  • Linje 26 — Den nyskabte honning føjes til den eksisterende honning;
  • Linje 27 — 2 enheder honning tildeles dronningen
  • Linje 28 — Disse to enheder fjernes fra den samlede mængde honning
  • Linje 29 - Dronningen spiser denne honning.
Så der gik de to forsvundne enheder! Hurra! Efter at have talt med en forretningsanalytiker konkluderer vi, at dokumentationen README-filen indeholder en fejl og skal opdateres. Lad os opdatere README-filen:
## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Vi er færdige. Vi har rettet alle de fejl, vi fandt. Vi kan roligt fortsætte med et selvtilfreds look, nippe til en kop kaffe og læse artikler om Stack Overflow CodeGym :)

Lad os opsummere

I denne artikel lærte vi:
  • alles arbejde har fejl, og debugging er en fantastisk måde at rette dem på
  • hvad et brudpunkt er, og hvilke typer brudpunkter der er
  • hvordan man indstiller et undtagelsesbrudpunkt
  • hvordan man går gennem kode i fejlretningstilstand

Artikel at læse

Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu