Foutopsporing met Eclipse

1. Overzicht

In deze korte handleiding zullen we zien hoe u fouten in Java-programma's kunt opsporen met behulp van de Eclipse IDE.

2. Basisconcepten

Eclipse heeft geweldige ondersteuning voor het debuggen van een applicatie. Het visualiseert de stapsgewijze uitvoering en helpt ons bugs te ontdekken.

Om de foutopsporingsfuncties in Eclipse te demonstreren, gebruiken we een voorbeeldprogramma PerfectSquareCounter. Dit programma telt het totaal aantal perfecte vierkanten en zelfs perfecte vierkanten onder een bepaald aantal:

openbare klasse PerfectSquareCounter {statische int evenPerfectSquareNumbers = 0; public static void main (String [] args) {int i = 100; System.out.println ("Total Perfect Squares:" + berekenCount (i)); System.out.println ("Even Perfect Squares:" + evenPerfectSquareNumbers); } openbare statische int berekenCount (int i) {int perfectSquaresCount = 0; for (int nummer = 1; nummer <= i; nummer ++) {if (isPerfectSquare (nummer)) {perfectSquaresCount ++; if (nummer% 2 == 0) {evenPerfectSquareNumbers ++; }}} retourneer perfectSquaresCount; } privé statische boolean isPerfectSquare (int nummer) {dubbele sqrt = Math.sqrt (nummer); return sqrt - Math.floor (sqrt) == 0; }}

2.1. Foutopsporingsmodus

Ten eerste moeten we start het Java-programma binnen Eclipse in de foutopsporingsmodus. Dit kan op twee manieren worden bereikt:

  • Klik met de rechtermuisknop op de editor en selecteer Foutopsporing als -> Java-toepassing (weergegeven in onderstaande screenshot)
  • Foutopsporing het programma van de werkbalk (gemarkeerd in onderstaande schermafbeelding)

2.2. Breekpunten

We moeten definieer de punten waarop de programma-uitvoering moet pauzeren voor onderzoek. Dit worden breekpunten genoemd en zijn van toepassing op methoden. Ze kunnen ook op elk moment voor of tijdens de uitvoering worden gedefinieerd.

In principe zijn er 3 manieren om breekpunten aan het programma toe te voegen:

  • Klik met de rechtermuisknop op de markeringsbalk (verticale liniaal) die overeenkomt met de lijn en selecteer Toggle Breakpoint (weergegeven in de onderstaande schermafbeelding)
  • druk op Ctrl + Shift + B op de benodigde regel terwijl je in de editor bent
  • Dubbelklik op de markeringsbalk (verticale liniaal) die overeenkomt met de benodigde lijn

2.3. Code-Flow Controls

Nu de debugger stopt bij de opgegeven breekpunten, kunnen we doorgaan met de verdere uitvoering.

Laten we aannemen dat de debugger momenteel is gepositioneerd volgens de onderstaande schermafbeelding, op regel 16:

De meest gebruikte debug-opties zijn:

  • Stap in (F5) - Deze bewerking gaat binnen de methoden gebruikt in de huidige regel (indien aanwezig); anders gaat het verder naar de volgende regel. In dit voorbeeld neemt het de debugger binnen de methode isPerfectSquare ()
  • Stap over (F6) - Deze bewerking verwerkt de huidige regel en gaat verder naar de volgende regel. In dit voorbeeld wordt de methode uitgevoerd isPerfectSquare () en ga door naar de volgende regel
  • Stap terug (F7) - Deze bewerking voltooit de huidige methode en brengt ons terug naar de aanroepende methode. Omdat we in dit geval een breekpunt in de lus hebben, zal het nog steeds binnen de methode vallen, anders zou het teruggaan naar de hoofdmethode
  • Hervatten (F8) - Deze bewerking zal gewoon doorgaan met de uitvoering totdat het programma eindigt tenzij we een verder breekpunt raken

2.4. Foutopsporingsperspectief

Wanneer we het programma starten in de foutopsporingsmodus, zal Eclipse vragen om een ‚Äč‚Äčoptie om over te schakelen naar het foutopsporingsperspectief. Het Debug-perspectief is een verzameling van enkele nuttige weergaven die ons helpen bij het visualiseren en gebruiken van de debugger.

We kunnen ook op elk moment handmatig overschakelen naar het Debug-perspectief.

Hier zijn enkele van de handigste weergaven die deze bevat:

  • Foutopsporingsweergave - Dit toont de verschillende threads en call stack-traces
  • Variabelen bekijken - Dit toont de waarden van de variabelen op een bepaald punt. Als we de statische variabelen willen zien, moeten we dat expliciet specificeren
  • Breekpunten - Dit toont de verschillende breekpunten en controlepunten (die we hieronder zullen zien)
  • Debug Shell - Dit stelt ons in staat om aangepaste code te schrijven en te evalueren tijdens het debuggen (een voorbeeld wordt later behandeld)

3. Technieken

In dit gedeelte zullen we enkele belangrijke technieken bespreken die ons zullen helpen om foutopsporing in Eclipse onder de knie te krijgen.

3.1. Variabelen

We kunnen de waarden van variabelen zien tijdens de uitvoering onder de weergave Variabelen. Om de statische variabelen te zien, kunnen we de vervolgkeuzelijst selecteren Java -> Statische variabelen weergeven.

Met behulp van de variabelenweergave is het mogelijk om elke waarde tijdens de uitvoering in de gewenste waarde te veranderen.

Als we bijvoorbeeld een paar getallen moeten overslaan en direct met het getal 80 moeten beginnen, kunnen we dat doen door de waarde van de variabele te wijzigen aantal:

3.2. Waarden inspecteren

Als we de waarde van een Java-expressie of -instructie moeten inspecteren, kunnen we de specifieke expressie in de editor selecteren, met de rechtermuisknop klikken en inspecteren, zoals hieronder wordt weergegeven. Een handige snelkoppeling is naar raken Ctrl + Shift + I op de uitdrukking om de waarde te zien:

Voor het geval dat nodig is deze uitdrukking permanent inspecteren, kunnen we met de rechtermuisknop klikken en kijken. Dit wordt nu toegevoegd aan de weergave Uitdrukkingen en de waarde van deze uitdrukking kan voor verschillende uitvoeringen worden gezien.

3.3. Debug Shell

In de context van de foutopsporingssessie, we kunnen aangepaste code schrijven en uitvoeren om de mogelijkheden te evalueren. Dit wordt gedaan in de Debug Shell.

Als we bijvoorbeeld de juistheid van de sqrt functionaliteit, zouden we het kunnen doen in de Debug Shell. Op de code, Klik met de rechtermuisknop -> Inspecteren om de waarde te zien:

3.4. Voorwaardelijke breekpunten

Er zullen gevallen zijn waarin we alleen voor specifieke voorwaarden willen debuggen. We kunnen dit bereiken door voorwaarden toe te voegen aan een breekpunt op twee manieren:

  • Klik met de rechtermuisknop op het breekpunt en kies Eigenschappen breekpunt
  • Selecteer in de weergave Breekpunt het breekpunt en geef de voorwaarde op

We kunnen bijvoorbeeld het breekpunt specificeren om de uitvoering alleen op te schorten als aantal is gelijk aan 10:

3.5. Watchpoints

Watbreekpunten zijn voor methoden, watchpoints zijn voor variabelen op klassenniveau. In dit huidige voorbeeld is het breekpunt op evenPerfectSquareNumbers declaratie wordt een watchpoint genoemd. Nu zal de debugger de uitvoering pauzeren elke keer dat het veld wordt geopend of gewijzigd op een watchpoint.

Dit is het standaardgedrag dat kan worden gewijzigd in de eigenschappen van het controlepunt.

In dit voorbeeld stopt de debugger de uitvoering telkens wanneer een perfect kwadraat een even getal is:

3.6. Triggerpunten

Laten we aannemen dat we een complex probleem opsporen in een applicatie met een enorme hoeveelheid broncode. De debugger blijft de stroom opschorten vanwege verspreide breekpunten.

Wanneer een breekpunt is gemarkeerd als een triggerpunt, betekent dit dat de rest van de breekpunten alleen wordt ingeschakeld als dit breekpunt wordt geraakt.

In de onderstaande schermafbeelding staat bijvoorbeeld het breekpunt op isPerfectSquare () hoort te worden geraakt voor elke iteratie in de lus. We hebben echter het breekpunt gespecificeerd op berekenenCount () methode als triggerpunt, samen met een voorwaarde.

Dus wanneer het aantal iteraties 10 bereikt, zal dit de rest van de breekpunten activeren. Vandaar, vanaf nu, als het breekpunt op isPerfectSquare () wordt geraakt, wordt de uitvoering opgeschort:

3.7. Foutopsporing op afstand

Ten slotte, als de applicatie buiten Eclipse draait, kunnen we nog steeds alle bovenstaande functionaliteiten gebruiken, op voorwaarde dat de externe applicatie foutopsporing toestaat. Van Eclipse zouden we selecteren Foutopsporing als externe Java-toepassing.

4. Conclusie

In deze korte handleiding hebben we de basisprincipes en verschillende technieken van foutopsporingsprogramma's in Eclipse IDE gezien.

Zoals altijd is de broncode die in deze oefening wordt gebruikt, beschikbaar op GitHub.