Debugger Basics in Intellij Idea |Intellij Idea -bloggen (2024)

Intellij Idea Blog Intellij Idea - The Leading Java and Kotlin Ide, av Jetbrains

nedlasting

Opplæringsprogrammer

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (2)

Mala Gupta

Hvis du noen gang har bruktSystem.out.println ()For å feilsøke koden din, er dette innlegget en må-lese.

En feilsøking er et spesielt verktøy som du kan bruke til å utføre koden din i et strengt kontrollert miljø.Den lar deg gjennomgå og analysere den indre tilstanden til applikasjonen din og finne og fikse feil som kan være skjult dypt inne i koden din.

Med en feilsøking har du også makt til å endre og teste oppførselen til koden din uten å endre kilden, og gjøre mange andre interessante ting også.La oss ta våre første skritt inn i feilsøkingsverdenen og se hva dette verktøyet er i stand til.

Å starte en feilsøking for en konsollapplikasjon er enkel.La oss bruke følgende prøvekode for å demonstrere:

pakke com.jetbrains; import java.io.ioException; import java.util.arrayList; import java.util.list; offentlig klasse koordinatescopy {public static void main (String [] args) kaster ioException {list linecoordinates = createCoordinatelist ();OutputValues (Linecoordinates);Punkt p = nytt punkt (13, 30);FjerningValue (Linecoordinates, P);OutputValues (Linecoordinates);} Privat statisk tomrom OutputValues (Liste LineCoordinates) {System.out.println ("Output Values ...");for (punkt P: Linecoordinates) {System.out.println (P);}} Privat statisk tomrom RemoveValue (Liste LineCoordinates, punkt P) {LineCoordinates.Remove (P);} privat statisk liste CreateCoordInatelist () {ArrayList List = new ArrayList <> ();liste.add (nytt punkt (12, 20));liste.add (nytt punkt (13, 30));Returliste;}}

Det er en rekke måter å starte feilsøking på:

  1. Du kan klikke på Kjørikonet i takrenneområdet og velge feilsøkingsalternativet.
  2. Du kan påkalle konteksthandlinger på klassen eller hovedmetoden ved å bruke ALT+Enter og velge feilsøkingshandling.
  3. Du kan også starte den fra RUN -menyen, eller ved å trykke på Shift F9.

Du kan redigere RUN -konfigurasjonen for å legge til virtuelle maskinalternativer eller for å gi argumenter til programmet.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (3)

Hvis søknaden din ser ut til å være ikke -svarende, kan du pause programmet for å analysere hvor koden din sitter fast.La oss endre hovedmetoden fra den foregående delen som følger:

offentlig statisk tomrom Main (String [] Args) kaster IOException {List LineCoordinates = CreateCoordinatelist ();OutputValues (Linecoordinates);Punkt p = nytt punkt (13, 30);int y = System.in.read ();// utførelse pauser her Removalue (Linecoordinates, P);OutputValues (Linecoordinates);}

Utfør applikasjonen din i feilsøkingsmodus.Hvis du ikke legger inn en verdi, vil søknaden dinsyneså bli ikke svarende.Dette kan være lett å forstå i denne koden, men ikke alle kodebaser er så enkle.

Klikk på i feilsøkingsvinduetPauseprogramOg redaktørvinduet vil vise klassen og metoden applikasjonen din for øyeblikket utfører - eller blokkert på.I dette eksemplet kan du se at koden er blokkert for brukerinngang, og viser relevant klasse og metode i redaktøren.Du kan også se anropsstabelen.Ved å klikke på metodesamtalene i anropsstabelen, kan du se den tilsvarende klassen og metoden i redigeringsvinduet.

Du kan gjenoppta programutførelsen ved å klikke påGjenoppta programmeteller ved å bruke snarveien F9.For å starte programmet på nytt i feilsøkingsmodus, velgRerun.Du kan slutte å feilsøke programmet når som helst ved å brukeStoppeikon.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (4)

Legg merke til at jeg ikke satte noen breakpoints i dette tilfellet.

Et bruddpunkt vil stoppe utførelsen av programmet ditt, slik at du kan analysere tilstanden til koden din.

For å angi et bruddpunkt på en kodeinje, klikker du i rennesteinområdet eller bruk snarveien Ctrl+F8 (Win/Linux) eller ⌘ F8 (MacOS).Hvis du ikke vil stoppe utførelsen hver gang den når et bruddpunkt, kan du definere en betingelse for bruddpunktet.La oss for eksempel legge til et bruddpunkt i metodenOutputValues (), på kodelinjen som sender ut verdien av variabelpog definere en betingelse for å stoppe utførelse av kode når feltetyav referansevariabelper lik30.

Du kan også dra slipp på bruddpunktet i rennesteinen og flytte det til en annen kodelinje.Som standard vil klikke på et bruddpunktikon i rennen slette det (du kan endre standardatferden i innstillinger | Innstillinger).Men hvis du har definert forhold eller andre parametere for et bruddpunkt, kan du kanskje foretrekke at det blir deaktivert, i stedet for å slette, når du klikker på det.Du kan gjøre dette ved å høyreklikke på Breakpoint-ikonet og velge Deaktiver.Et hake indikerer at det er informasjon for denne kodelinjen, mens et kors indikerer at ingen informasjon er tilgjengelig på dette breakpoint.

For å sjekke hvordan Breakpoint og dets forhold fungerer, utfør eksempelsekoden som er inkludert i denne bloggen (i feilsøkingsmodus).Du vil se at dette programmet vil pause når verdien av feltetyfor variabelper30.

Det er mye mer å brytepunkter.Du kan høyreklikke på Breakpoint-ikonet i rennesteinen og klikke på mer.I dialogen som åpnes, kan du endre et breakpoint slik at det ikke suspenderer programutførelsen og i stedet logger et uttrykk når det er nådd.La oss logge verdien avxogyfelt avPunktKlasse og kjør på nytt koden vår.Nå stopper ikke kodeutførelsen ved breakpoint - i stedet logger den uttrykket vi definerte til konsollen.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (5)

Feilsøkingsvinduet viser viktig informasjon når applikasjonen din suspenderer utførelsen på et bruddpunkt, som rammer, tråder, konsollvindu, trinnaksjonsikoner, variabler og mye mer:

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (6)

Hvis du lukker feilsøkingsvinduet ved en feiltakelse, kan du alltid åpne det ved å bruke snarveien Alt+5 (Win/Linux) eller ⌘ 5 (MacOS).Som vanlig er det flere måter å få tilgang til feilsøkingsvinduet på.Du kan også få tilgang til den ved hjelp av ‘Search Everywhere’ -funksjonen (snarvei: skift+skift), ved hjelp avFinn handling(Snarvei: Ctrl+Shift+A for Win/Linux og ⇧ ⌘ A for macOS), og ved å søke etter ‘debug’.

Du kan også se feilsøkingsvinduet etter at applikasjonen din er ferdig med å utføre i feilsøkingsmodus.Du kan bruke feilsøkingsvinduet ikke bare til å navigere gjennom koden din i feilsøkingsmodus, men du kan også bruke den til å se alle breakpoints i programmet ditt, dempe dem og ytterligere endre hva de gjør.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (7)

Før vi går videre med trinnhandlingene som brukes til å feilsøke en applikasjon, la oss forstå prøveapplikasjonen som ble brukt i dette eksemplet.

Koden som brukes i denne bloggen er enkel.MetodenOpprett koordinatliste ()Oppretter to forekomster avPunktklasse og legger dem til enArrayList.DePunktKlassen har to felt,xogy, og getter og setter -metoder.DeOutputValues ()Metode sender ut de passerte listeelementene til konsollen.Den neste kodelinjen skaper enPunktforekomst ogFjernValue ()Metoden prøver å fjerne den fralinjekoordinaterliste.

Når du utfører denne koden, vil du se i utgangen at selv om enPunktmedxogyverdier1. 3og30ble lagt til listen, da en annen forekomst med identiske verdier ble opprettet for å fjerne den, var den ikke vellykket.La oss feilsøke koden.

For å feilsøke koden din, må du kjenne de forskjellige trinnhandlingene du kan bruke for å flytte gjennom koden din for å finne feilene.

Det er forskjellige måter å navigere i koden din i feilsøkingsmodus.For eksempel foretrekker du kanskje å utføre en kodeinje uten å bry deg om detaljene i metodene som blir kalt.Eller du foretrekker kanskje å se hvilke linjer med kodeutfør når du ringer en annen metode fra applikasjonen, bibliotekene eller API -ene.Du kan gjøre dette gjennom de forskjellige trinnshandlingene.

Angi et bruddpunkt før du starter applikasjonen i feilsøkingsmodus.De forskjellige trinnhandlingene er:

  • Tråkke over(F8) lar deg utføre en kodelinje og gå videre til neste linje.Når du går gjennom koden, vil du se verdien av variablene ved siden av koden i redigeringsvinduet.Disse verdiene er også synlige i variablene i feilsøkingsvinduet.
  • Gå inn i(F7) vil ta deg til den første kodelinjen i en metode definert i samme klasse, eller en annen klasse i applikasjonen.
  • Tvinge trinn innlar deg feilsøke metoder definert i API -er eller biblioteker.Hvis kildekoden til API eller bibliotek ikke er tilgjengelig, dekomponerer Intellij Idea og feilsøker det for deg.
  • MedGå ut, kan du hoppe over å gå gjennom kode i en metodelinje for linje og gå tilbake til anropsmetoden.Den kalt metoden kjøres, men uten å gå gjennom hver kodeinje i den.
  • Slipp rammelar deg gå tilbake gjennom kodeutførelse ved å slippe en metodeanrop.

La oss bruke alle foregående handlinger for å feilsøkeKoordinaterklasse.Vi starter med å gå over kodelinjene ihoved()metode, gå inn iFjerningsevalues ()metode, og styrke ifjerne()metode forArrayListklasse oger lik()metode for å sjekke hvordan verdiene tillinjekoordinaterListen blir sammenlignet med verdien av referansevariabelenp, slik at en samsvarende verdi kan fjernes fra listen.Hvis du går videre til en kodelinje mens du feilsøker, kan du bruke slippramme til å slippe en ramme fra anropsstabelen og gå tilbake til anropingsmetoden.

I prøveapplikasjonen oppdaget vi at ‘feilen’ er forårsaket av måtener lik()Metode sammenligner verdier.Det returnerer bare sant hvis referansene stemmer overens, ikke hvis deres tilsvarende feltverdier stemmer overens.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (8)

La oss fikse denne feilen ved å overstyreer lik()metode iPunktklasse.

La oss se på koden og sjekke om den fungerer som forventet.Start applikasjonen og se resultatet.

Alt ser bra ut nå.Vi klarte å finne en feil og fikse den også!

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (9)

Hvis du bytter gjennom klasser og leser gjennom kode og savner hvor koden kjørte, kan du klikke påVis utførelsespunkt.For å hoppe over å utføre kodelinje for linje, kan du gå videre til en linje og klikke påLøp til markøren.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (10)

Inline Debugger er veldig nyttig siden den viser verdien av variablene i redaktøren når du går gjennom koden.Imidlertid viser variablene ruten mye mer detaljer.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (11)

I dette eksemplet, siden vi ikke overstyrtetoString ()metode forPunktKlasse, redaktørvinduet viser klassenavnet og debugger -objekt -ID -en, som ikke ser ut til å være veldig nyttig.Debugger -ruten viser alle felt med variabler, inkludert private felt.

Å klikke på stabler vil vise oss variablene som er relevante for den bunken.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (12)

Du kan høyreklikke på en variabel og velgeHopp til kilde(F4) For å se hvor det ble erklært å forstå koden din bedre.Ved å velge alternativetHopp til type kilde(Shift+F4), kan du også se definisjonen av ikke-primitive variabler.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (13)

I en anropsstabel kan det være lurt å evaluere et uttrykk for å bekrefte forutsetningene dine.For eksempel kan jeg evaluere verdien avdettevariabel, eller andre gyldige uttrykk, somdetteer dobbelt lik en forekomst avPunktklasse, ellerdetteer.er lik()til en forekomst avPunktklasse.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (14)

Du kan opprette en variabel hvis verdi er tilgjengelig i alle anropsstablene ved å legge til en ny klokke.Si,System.getProperty, og bruk navnet på OS.

Du kan opprette klokker for å se verdien av visse variabler i alle anropsstablene.Det er flere måter å gjøre det på.Du kan høyreklikke i koden i redaktøren og velgeLegg til klokker.I den variable ruten kan du også klikke på variabelen og dra og slippe den til klokkemetten.

Verdiene til disse variablene er kanskje ikke tilgjengelige i alle samtalestablene.Det avhenger virkelig av omfanget av variabelen.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (15)

Visste du at du kan endre oppførselen til koden din uten å endre kilden?Og dette gjelder koden som er definert av et annet API eller rammeverk også.

I denne kodeutførelsen,xogyfelt avPunktforekomster som blir sammenlignet er like, og detteer lik()Metoden er i ferd med å returnere sann.Vi kan endre verdien av en variabel ved å høyreklikke på den i variabelruten og velgeAngi verdi….Når vi gjør dette, endres oppførselen til koden.Med den endrede verdien,er lik()Metoden returnererfalskog denne verdien vil ikke bli fjernet fraArrayList.

Debugger Basics in IntelliJ IDEA | The IntelliJ IDEA Blog (16)

Debugger er et kraftig og allsidig verktøy som utfører programmer i et kontrollert miljø.Med en feilsøking kan du se den indre tilstanden til en applikasjon, finne feil, forstå kode og gjøre mange andre ting.

Følg med for neste blogg på feilsøkingen der vi dekker avanserte funksjoner som ekstern feilsøking, breakpoint -typer, kjører tester til de mislykkes, og mye mer.

Debugger Screencasts

  • Dele
  • Facebook
  • Twitter
  • LinkedIn

Forrige innlegg 25 ting vi elsker om JavaIntellij Idea 2020.2 Tidlig tilgangsprogram starter!Neste innlegg

Abonner på bloggoppdateringer

Oppdag mer

Profil på farten med Intellij -profilen på Jetbrains, vi mener at profilering bør være enkel og tilgjengelig for alle utviklere, uavhengig av deres kompetanse.Det er grunnen til
Java kommenterte månedlig - juli 2023 Velkommen til Java kommentert månedlig!Vi har en spennende utgave som er stilt opp for deg, fullpakket med verdifullt innhold og innsiktsfulle artikler. Du vil lære om AI -assistent av Jetbrains, oppdage nye funksjoner i den kommende Java 21 -utgivelsen og få verdifull instruksjon fra opplæringsprogrammer, tips og Tri ... IrinaMaryasova
History of Gradle Delegation Process in Intellij Idea I dag er et byggeverktøy en essensiell del av ethvert prosjekt, og IntelliJ -ideen integreres med flertallet av dem.Blant de mest populære byggeverktøyene er Gradle. Vi vil gjerne gi en kort historisk oversikt over integrasjonen med Intellij Idea og delegasjonsprosessen implementert i I… Elena Kozlova
Hvordan jobbe med Protobuf-Maven-prosjekter i Intellij Idea Protobuf, forkortelse for protokollbuffere, er et språk-agnostisk data-serialiseringsformat utviklet av Google.Den er designet for å effektivt og pålitelig serialisere strukturerte data for å kommunisere mellom forskjellige systemer og programmeringsspråk.Protobuf tilbyr en kompakt binær representasjon av data ... Elena Kozlova
Debugger Basics in Intellij Idea |Intellij Idea -bloggen (2024)
Top Articles
Latest Posts
Article information

Author: Msgr. Benton Quitzon

Last Updated:

Views: 6136

Rating: 4.2 / 5 (63 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.