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!
Vælg debug- præsentationsprojektet, og tryk på OK . Så vil du se følgende vindue:
Lad 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.
ikonet 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
, eller trykke på Ctrl+Shift+F8 :
Flytter vi til listen over brudpunkter, vil vi se følgende:
Der er to brudpunkter her:
Skriv navnet på den undtagelse, du vil tilføje, i vinduet, som du vil tilføje, vælg fra listen og klik OK :
Det afslutter vores primer om, hvordan man sætter tingene op, så nu skal vi' Jeg vil øve mig.
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:
Vi 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å
Det var lige det, vi talte om ovenfor. Lad os holde øje med denne RuntimeException ved at køre
Som 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 - 17]()
For 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:
Applikationen kører til færdiggørelse og giver følgende svar:
dokumentationen README-filen omdannes nektar til honning i forholdet 2 til 1:
Vi 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:
For at stoppe programmet skal du klikke på den røde firkant:
For at genstarte programmet i fejlretningstilstand skal du klikke på pilen:
Yderligere kan du fortsætte gennem ansøgning trin for trin ved hjælp af to taster:
Nu vil vi bruge F8 til at træde gennem denne metode og beskrive, hvad der sker i den:
dokumentationen README-filen indeholder en fejl og skal opdateres. Lad os opdatere README-filen:
Stack Overflow CodeGym :)

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 placereSystem.out.println
sæ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:- 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.
- Klon dette GitHub-projekt og importer det gennem IDEA.


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:
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:
-
Om en metode:
-
På en klasse:




- Bee.java:24 — i Bee-klassen på linje 24
- Main.java:14 — i hovedklassen på linje 14


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- 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.
main()
metoden, så finder vi ud af, at vores program ikke kun beregner mængden af honning, det giver også en undtagelse... 
HoneyPlant.java:20
: 
main()
metoden i fejlretningstilstand. For at gøre dette skal du klikke på den grønne trekantpil i IntelliJ IDEA ud for metoden main()
. 


- nektar = 1,0;
- nektarKapacitet = -1,0.
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: 
"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
## 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: 



- F8 — Gå gennem koden uden at træde ind i metoder;
- F7 — Gå gennem kode og gå ind i metoder.
beeHive.populateHoney()
metoden. Når vi træder ind i det, får vi: 
- 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.
## 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 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
GO TO FULL VERSION