CodeGym /Java-blogg /Tilfeldig /Feilsøking i IntelliJ IDEA: en nybegynnerveiledning
John Squirrels
Nivå
San Francisco

Feilsøking i IntelliJ IDEA: en nybegynnerveiledning

Publisert i gruppen
Hei alle i CodeGym-fellesskapet! La oss i dag snakke om feilsøking - hva er det og hvordan feilsøke i IntelliJ IDEA. Denne artikkelen er ment for personer som allerede har et minimumskunnskap om Java Core. Det vil ikke være noen rammer eller kompliserte prosedyrer for å publisere biblioteker. En rolig spasertur. Så gjør deg komfortabel og la oss komme i gang! Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 1

Hvorfor du trenger feilsøkingsmodus

La oss umiddelbart avklare noe for oss selv: det er ingen kode uten feil... Dette er bare hvordan livet fungerer. Så vi bør ikke falle i stykker og gi opp hvis koden vår ikke fungerer som vi forventet. Men hva bør vi gjøre? Vel, vi kunne legge ut System.out.printlnsetninger overalt og deretter finkjemme konsollens utdata i håp om å finne en feil. Når det er sagt, kan du (og folk gjør det) feilsøke ved hjelp av forsiktig logging. Men hvis du kan kjøre koden din på en lokal maskin, er det bedre å bruke feilsøkingsmodus . Jeg vil merke med en gang at i denne artikkelen vil vi vurdere å feilsøke et prosjekt ved å bruke IntelliJ IDEA.

Hva er feilsøkingsmodus?

Feilsøkingsmodus er for å feilsøke (sjekke) kjørende kode. Det gjør det mulig for deg å stoppe henrettelsen på anviste steder og se hvordan ting utvikler seg. Den lar deg forstå tilstanden til programmet på et bestemt sted i koden. Det er akkurat som å kunne stoppe klokken og se på alt fra siden. Kult, ikke sant? Målet vårt er å raskt og enkelt lære å feilsøke applikasjoner ved å bruke vårt elskede IntelliJ IDEA-utviklingsmiljø.

Hva du trenger for å begynne å feilsøke

Her er noen gratis råd: mens du leser denne artikkelen, gjør alt som vil bli beskrevet her - du har alt du trenger for å følge med. Hva trenger du:
  1. IntelliJ IDEA versjon 2019.3.1 eller høyere. I tilfelle noen ikke har dette, her er en lenke hvor du kan laste den ned . Last ned Community Edition - det er versjonen jeg skal bruke.
  2. Klon dette GitHub-prosjektet og importer det gjennom IDEA.
Åpne IDEA: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 2Velg feilsøkingspresentasjonsprosjektet og trykk OK . Da vil du se følgende vindu: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 3La de valgte alternativene stå: Importer prosjekt fra eksterne kilder og Maven . Klikk Fullfør . Nå som vi har importert prosjektet, kan vi beskrive resten av prosessen med et levende eksempel.

Bare litt teori... Jeg lover :D

For å begynne å feilsøke enda litt, må du forstå hva et bruddpunkt er og være kjent med noen få hurtigtaster. Et bruddpunkt er en spesiell markør som indikerer hvor du vil at kjøringen av applikasjonen skal stoppe, eventuelt basert på applikasjonstilstanden. Du kan angi et bruddpunkt enten ved å venstreklikke på venstre sidepanel, eller ved å klikke på kodeplasseringen og trykke Ctrl+F8 . La oss se på tre typer bruddpunkter: linjebruddpunkter, feltvaktpunkter og og metodebruddpunkter. Slik ser det ut:
  • På en linje:

    Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 4

    Hvis en setning har et lambda-uttrykk, ber IDEA deg velge om du vil sette bruddpunktet på hele setningen eller spesifikt på lambda-uttrykket:

    Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 5
  • Om en metode:

    Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 6
  • På en klasse:

    Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 7
Knekkpunkter kan fjernes ved å følge de samme trinnene som brukes til å legge dem til. Det er situasjoner når du vil deaktivere (dempe) dem. For å gjøre dette, finn Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 8ikonet i feilsøkingsdelen. Dette vil dempe alle bruddpunkter. For å se hvilke bruddpunkter som er satt, kan du enten gå til feilsøkingsseksjonen i nedre venstre hjørne og finne ikonet Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 9, eller trykke Ctrl+Shift+F8 : Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 10Flytter du til listen over bruddpunkter, vil vi se følgende: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 11Det er to bruddpunkter her:
  • Bee.java:24 — i Bee-klassen på linje 24
  • Main.java:14 — i hovedklassen på linje 14
Vær oppmerksom på at disse bruddpunktene ikke blir satt automatisk hvis du har klonet prosjektet: du må angi dem selv! Det er også en Java Exception Breakpoints- seksjon. Det er veldig nyttig. Her kan du legge til et implisitt bruddpunkt slik at programmet stopper før du kaster et unntak eller et spesifikt unntak. Vi legger til et implisitt bruddpunkt for RuntimeException. Dette er enkelt å gjøre. Finn "+"-ikonet i øvre venstre hjørne. Klikk på den og velg Java Exception Breakpoints : Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 12I vinduet som vises, skriv navnet på unntaket du vil legge til, velg fra listen og klikk OK : Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 13Det avslutter vår primer om hvordan du setter opp ting, så nå har vi kommer til å trene litt.

La oss gå og gjøre dette som heter feilsøking!

Jeg kommer fra en lang rekke familie-birøktere, så prosjektet jeg opprettet for å illustrere feilsøking beskriver modeller prosessen med bier som samler nektar, bearbeider nektar til honning og deretter får honning fra bikuben. I følge dokumentasjonen README-filen, som finnes i prosjektets rotkatalog, er forventet oppførsel for alle blomster som nektar samles inn fra at mengden innsamlet honning (som har form av en dobbel ) skal være lik halvparten av den innsamlede nektaren. Prosjektet har følgende klasser:
  • Bee - en vanlig arbeidsbi
  • BeeQueen - biedronningen
  • BeeHive — bikuben
  • HoneyPlant - en honningplante (nektarkilde) som nektar samles inn fra
  • Main — det er her vi finner public static void main(), metoden der utførelsen starter.
Hvis vi kjører main()metoden, så finner vi ut at programmet vårt ikke bare beregner mengden honning, det gir også et unntak... Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 14Vi må undersøke og finne ut hva problemet er. Fra sporbunken i nedre høyre hjørne kan vi se at et RuntimeException ble kastet på HoneyPlant.java:20: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 15Det var akkurat det vi snakket om ovenfor. La oss se etter dette RuntimeException ved å kjøre main()metoden i feilsøkingsmodus. For å gjøre dette, klikk på den grønne trekantpilen i IntelliJ IDEA ved siden av metoden main(). Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 16Som et resultat vil vi få programmet stoppet i øyeblikket rett før unntaket blir kastet, og vi vil se dette ikonet: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 17Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 18For å få all tilgjengelig informasjon, må vi se i feilsøkingsdelen. Den har en Variablesrute som viser alle variablene som er tilgjengelige i denne delen av applikasjonen:
  • nektar = 1,0;
  • nektarKapasitet = -1,0.
Å kaste unntaket er fornuftig, fordi en honningplante ikke kan ha en negativ mengde nektar. Men hvorfor skjer dette? Tross alt, i linjene 15-17, sjekker vi om nektartilførselen er oppbrukt og returnerer null hvis den er:

	if (nectar == 0) {
   	     return 0;
}
Men problemet er at vi sjekker feil variabel. Dette er en feil i koden. I stedet for å sjekke mengden nektar som er tilgjengelig i blomsten (som er lagret i variabelen nectarCapacity ), sjekker programmet verdien av metodens nektarparameter , som er mengden nektar som vi ønsker å ta fra blomsten. Her er det! Vår første feil! Etter å ha fikset dette får vi følgende kode:

	if (nectarCapacity == 0) {
   	     return 0;
}
Kjør nå main()metoden på vanlig måte (Run 'Main.main()'). Det er ingen unntak, og programmet fungerer: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 19Applikasjonen kjører til fullføring og gir følgende svar:

"33.0 honey was produced by 7 bees from 2 honey plants"
Alt ville vært bra nå, men dette svaret er feil... I følge dokumentasjonen README -filen, blir nektar konvertert 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 enheter nektar. Så vi bør til slutt ende opp med 35 enheter honning. Men programmet forteller oss at vi får 33. Hvor ble det av de to andre enhetene? La oss finne det ut! For å gjøre dette, sett et bruddpunkt i Main.main()metoden på linje 28, der beeHive.populateHoney()kalles og kjører main()metoden i feilsøkingsmodus: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 20Vi vil vurdere dette punktet mer detaljert. Programmet sluttet å kjøre før linje 28 ble kjørt. I den nedre delen ser vi Debug-delen, som viser all tilgjengelig informasjon om den kjørende applikasjonen. Som allerede nevnt inneholder Variabler-panelet alle variablene og objektene som er tilgjengelige fra denne delen av applikasjonen. Rammer-ruten viser trinnene som applikasjonen går gjennom - du kan se på tidligere (rammer) trinn og se alle lokale data. For å fortsette å kjøre programmet, kan du trykke på F9 eller det grønne ikonet, som vist nedenfor: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 21For å stoppe programmet, klikk på den røde firkanten: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 22For å starte programmet på nytt i feilsøkingsmodus, klikk på pilen: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 23Videre kan du fortsette gjennom søknad trinn for trinn ved hjelp av to taster:
  • F8 — Gå gjennom koden uten å gå inn i metoder;
  • F7 — Gå gjennom kode og gå inn i metoder.
I vårt tilfelle må vi trykke F7 for å gå inn i beeHive.populateHoney()metoden. Når vi går inn i det, får vi: Feilsøking i IntelliJ IDEA: en nybegynnerveiledning - 24Nå skal vi bruke F8 til å gå gjennom denne metoden og beskrive hva som skjer i den:
  • Linje 25 — Stream API brukes til å samle nektar fra alle biene
  • Linje 26 — Den nyopprettede honningen legges til den eksisterende honningen;
  • Linje 27 — 2 enheter honning tildeles dronningen
  • Linje 28 — Disse to enhetene fjernes fra den totale mengden honning
  • Linje 29 — Dronningen spiser denne honningen.
Så det var dit de to savnede enhetene gikk! Hurra! Etter å ha snakket med en forretningsanalytiker, konkluderer vi med at dokumentasjonen README-filen inneholder en feil og må oppdateres. La oss oppdatere 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 ferdige. Vi har fikset alle feilene vi fant. Vi kan rolig fortsette med et selvtilfreds utseende, nippe til litt kaffe og lese artikler om Stack Overflow CodeGym :)

La oss oppsummere

I denne artikkelen lærte vi:
  • alles arbeid har feil og feilsøking er en fin måte å fikse dem på
  • hva et bruddpunkt er og hvilke typer bruddpunkter det finnes
  • hvordan sette et unntaksbruddpunkt
  • hvordan gå gjennom koden i feilsøkingsmodus

Artikkel å lese

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION