Fejlfinding med Eclipse

1. Oversigt

I denne hurtige vejledning ser vi, hvordan du debuggerer Java-programmer ved hjælp af Eclipse IDE.

2. Grundlæggende begreber

Eclipse har stor støtte til fejlfinding af en applikation. Det visualiserer trinvis udførelse og hjælper os med at afdække fejl.

For at demonstrere fejlfindingsfunktionerne i Eclipse bruger vi et eksempelprogram PerfectSquareCounter. Dette program tæller de samlede perfekte firkanter og endda perfekte firkanter under et givet antal:

offentlig klasse PerfectSquareCounter {statisk int evenPerfectSquareNumbers = 0; public static void main (String [] args) {int i = 100; System.out.println ("Total perfekte firkanter:" + calcCount (i)); System.out.println ("Selv perfekte firkanter:" + evenPerfectSquareNumbers); } offentlig statisk int beregneCount (int i) {int perfectSquaresCount = 0; for (int antal = 1; nummer <= i; antal ++) {hvis (isPerfectSquare (nummer)) {perfectSquaresCount ++; hvis (nummer% 2 == 0) {evenPerfectSquareNumbers ++; }}} returner perfectSquaresCount; } privat statisk boolsk isPerfectSquare (int-nummer) {double sqrt = Math.sqrt (number); returner sqrt - Math.floor (sqrt) == 0; }}

2.1. Fejlretningstilstand

Først skal vi start Java-programmet i Eclipse i fejlretningstilstand. Dette kan opnås på to måder:

  • Højreklik på editoren, og vælg Fejlret som -> Java-applikation (vist i nedenstående skærmbillede)
  • Fejlfinde programmet fra værktøjslinjen (fremhævet i nedenstående skærmbillede)

2.2. Breakpoints

Vi er nødt til definere de punkter, hvor programudførelsen skal stoppe til efterforskning. Disse kaldes breakpoints og kan anvendes til metoder. De kan også defineres når som helst før eller under udførelse.

Grundlæggende er der 3 måder at tilføje breakpoints til programmet på:

  • Højreklik på markørbjælken (lodret lineal) svarende til linjen og vælg Skift brydepunkt (vist i nedenstående skærmbillede)
  • Trykke Ctrl + Skift + B på den nødvendige linje i redaktøren
  • Dobbeltklik på markørbjælken (lodret lineal) svarende til den nødvendige linje

2.3. Kode-flow kontrol

Nu hvor debuggeren stopper ved de givne breakpoints, kan vi fortsætte med yderligere udførelse.

Lad os antage, at fejlfinderen i øjeblikket er placeret i henhold til nedenstående skærmbillede på linje 16:

De mest anvendte fejlretningsindstillinger er:

  • Træd ind (F5) - Denne operation går inden i metoderne bruges i den aktuelle linje (hvis nogen) ellers fortsætter den til næste linje. I dette eksempel tager det fejlfindingsprogrammet inde i metoden isPerfectSquare ()
  • Trin over (F6) - Denne handling behandler den aktuelle linje og fortsætter til den næste linje. I dette eksempel udføres metoden isPerfectSquare () og fortsæt til næste linje
  • Trinretur (F7) - Denne operation afslutter den aktuelle metode og fører os tilbage til opkaldsmetoden. Da vi i dette tilfælde har et brudpunkt i sløjfen, vil det stadig være inden for metoden, ellers ville det gå tilbage til hovedmetoden
  • CV (F8) - Denne handling fortsætter simpelthen med udførelsen, indtil programmet slutter medmindre vi rammer noget yderligere brudpunkt

2.4. Fejlfindingsperspektiv

Når vi starter programmet i fejlretningstilstand, vil Eclipse bede om en mulighed for at skifte til fejlfindingsperspektivet. Debug-perspektivet er en samling af nogle nyttige synspunkter, der hjælper os med at visualisere og interagere med debuggeren.

Vi kan også til enhver tid skifte til Debug-perspektivet manuelt.

Her er nogle af de mest nyttige synspunkter, som dette indeholder:

  • Fejlret visning - Dette viser de forskellige tråde og spor af opkaldstak
  • Visning af variabler - Dette viser værdierne for variablerne på et givet punkt. Hvis vi har brug for at se de statiske variabler, skal vi eksplicit angive det
  • Breakpoints - Dette viser de forskellige breakpoints og watchpoints (som vi vil se nedenfor)
  • Fejlret Shell - Dette giver os mulighed for at skrive og evaluere brugerdefineret kode under fejlretning (et eksempel er beskrevet senere)

3. Teknikker

I dette afsnit gennemgår vi nogle vigtige teknikker, der hjælper os med at mestre debugging i Eclipse.

3.1. Variabler

Vi kan se værdierne af variabler under udførelsen under visningen Variabler. For at se de statiske variabler kan vi vælge rullemenuen Java -> Vis statiske variabler.

Ved hjælp af variablens visning er det muligt at ændre enhver værdi til den ønskede værdi under udførelsen.

For eksempel, hvis vi har brug for at springe over et par tal og starte direkte med tallet 80, kunne vi gøre det ved at ændre værdien af ​​variablen nummer:

3.2. Inspektion af værdier

Hvis vi har brug for at inspicere værdien af ​​et Java-udtryk eller -udtalelse, kan vi vælge det bestemte udtryk i editoren, højreklikke og inspicere som vist nedenfor. En praktisk genvej er at hit Ctrl + Skift + I på udtrykket for at se værdien:

Hvis vi har brug for det inspicere dette udtryk permanent, kan vi højreklikke og se. Nu føjes dette til visningen Udtryk, og værdien af ​​dette udtryk kan ses for forskellige kørsler.

3.3. Fejlret Shell

I forbindelse med debugging-sessionen Vi kan skrive og køre brugerdefineret kode for at evaluere mulighederne. Dette gøres i Debug Shell.

For eksempel, hvis vi har brug for at krydstjekke korrektheden af sqrt funktionalitet, kunne vi gøre det i Debug Shell. På koden, Højreklik -> Inspicer for at se værdien:

3.4. Betingede brudpunkter

Der vil være tilfælde, hvor vi kun ønsker at debugge efter specifikke forhold. Vi kan opnå dette ved at tilføje betingelser til et brudpunkt på en af ​​to måder:

  • Højreklik på pausepunktet, og vælg Breakpoint-egenskaber
  • I Breakpoint-visning skal du vælge breakpoint og angive betingelsen

For eksempel kan vi kun specificere det brudpunkt, der skal suspendere udførelsen, hvis nummer er lig med 10:

3.5. Vagtpunkter

Hvadbreakpoints er for metoder, watchpoints er for variabler på klasseniveau. I dette aktuelle eksempel er brudpunktet på evenPerfectSquareNumbers erklæring kaldes et overvågningssted. Nu afbryder fejlfinderen udførelsen, hver gang feltet åbnes eller ændres på et overvågningssted.

Dette er standardadfærden, som kan ændres i overvågningspunktsegenskaberne.

I dette eksempel stopper debuggeren udførelsen, hver gang en perfekt firkant er et lige tal:

3.6. Trigger Points

Lad os antage, at vi debugger et komplekst problem i en applikation med en enorm mængde kildekode. Fejlfindingsprogrammet vil fortsætte med at suspendere strømmen på grund af spredte brudpunkter.

Når et breakpoint er markeret som et triggerpunkt, betyder det, at resten af ​​breakpoints kun aktiveres, hvis dette breakpoint er ramt.

For eksempel i skærmbilledet nedenfor er brudpunktet aktiveret isPerfectSquare () formodes at blive ramt for hver iteration i sløjfen. Vi har dog specificeret brudpunktet på beregne antal () metode som udløserpunkt sammen med en tilstand.

Så når iterationstallet når 10, vil dette udløse resten af ​​breakpoints. Derfor, fra nu af, hvis brudpunktet er på isPerfectSquare () er ramt, vil henrettelsen blive suspenderet:

3.7. Fjernfejlfinding

Endelig, hvis applikationen kører uden for Eclipse, kan vi stadig bruge alle ovenstående funktioner, forudsat at fjernapplikationen tillader fejlfinding. Fra Eclipse ville vi vælge Fejlret som ekstern Java-applikation.

4. Konklusion

I denne hurtige guide har vi set det grundlæggende og forskellige teknikker til fejlfindingsprogrammer i Eclipse IDE.

Som altid er kildekoden, der er brugt i denne øvelse, tilgængelig på GitHub.