Hibakeresés az Eclipse segítségével

1. Áttekintés

Ebben a gyors útmutatóban megtudhatjuk, hogyan lehet hibakeresni a Java programokat az Eclipse IDE használatával.

2. Alapfogalmak

Az Eclipse nagy támogatást nyújt egy alkalmazás hibakereséséhez. Lépésről lépésre megjeleníti a végrehajtást és segít feltárni a hibákat.

Az Eclipse hibakeresési funkcióinak bemutatásához egy mintaprogramot használunk PerfectSquareCounter. Ez a program a teljes tökéletes négyzeteket, sőt a tökéletes négyzeteket is megszámolja egy adott szám alatt:

public class PerfectSquareCounter {static int evenPerfectSquareNumbers = 0; public static void main (String [] args) {int i = 100; System.out.println ("Teljes Tökéletes Négyzetek:" + calcCount (i)); System.out.println ("Páros tökéletes négyzetek:" + evenPerfectSquareNumbers); } public static int calcCount (int i) {int perfectSquaresCount = 0; mert (int szám = 1; szám <= i; szám ++) {if (isPerfectSquare (szám)) {perfectSquaresCount ++; if (szám% 2 == 0) {evenPerfectSquareNumbers ++; }}} return perfectSquaresCount; } privát statikus logikai isPerfectSquare (int szám) {double sqrt = Math.sqrt (szám); return sqrt - Math.floor (sqrt) == 0; }}

2.1. Hibakeresési mód

Először is meg kell indítsa el a Java programot az Eclipse-en belül debug módban. Ez kétféleképpen érhető el:

  • Kattintson a jobb gombbal a szerkesztőre, és válassza a lehetőséget Hibakeresés másként -> Java alkalmazás (az alábbi képernyőképen látható)
  • Hibakeresés a program az eszköztárról (kiemelve az alábbi képernyőképen)

2.2. Töréspontok

Meg kell határozza meg azokat a pontokat, ahol a program végrehajtásának szünetet kell tartania vizsgálatra. Ezeket töréspontoknak nevezzük, és a módszerekre alkalmazhatók. A végrehajtás előtt vagy közben bármikor meghatározhatók.

Alapvetően 3 módon adhatunk töréspontokat a programhoz:

  • Kattintson a jobb gombbal a vonalnak megfelelő jelölősávra (függőleges vonalzó), majd válassza a Toggle Breakpoint lehetőséget (az alábbi képernyőképen látható)
  • nyomja meg Ctrl + Shift + B a szükséges soron, miközben a szerkesztőben van
  • Kattintson duplán a szükséges vonalnak megfelelő jelölősávra (függőleges vonalzó)

2.3. Code-Flow vezérlők

Most, hogy a hibakereső megáll a megadott töréspontokon, folytathatjuk a további végrehajtást.

Tegyük fel, hogy a hibakereső az alábbi képernyőkép szerint van elhelyezve a 16. sorban:

A leggyakrabban használt hibakeresési lehetőségek:

  • Belépés (F5) - Ez a művelet belemegy a módszerekbe az aktuális sorban használt (ha van); máskülönben a következő sorra halad. Ebben a példában a hibakeresőt a metódus belsejébe fogja vinni isPerfectSquare ()
  • Lépjen át (F6) - Ez a művelet feldolgozza az aktuális sort, és továbblép a következő sorra. Ebben a példában ez végrehajtja a módszert isPerfectSquare () és folytassa a következő sorral
  • Visszalépés (F7) - Ez a művelet befejezi az aktuális módszert, és visszavezet minket a hívási módszerhez. Mivel ebben az esetben van egy töréspontunk a ciklusban, ez továbbra is a metóduson belül lesz, különben visszatérne a fő módszerre
  • Folytatás (F8) - Ez a művelet egyszerűen folytatódik a program végrehajtásáig hacsak nem érünk további töréspontot

2.4. Debug Perspective

Amikor a programot hibakeresési módban indítjuk, az Eclipse felajánl egy lehetőséget, hogy váltson a Debug perspektívára. A Hibakeresési perspektíva néhány hasznos nézet gyűjteménye, amelyek segítenek bennünket a hibakeresőben való megjelenítésben és az interakcióban.

A Debug perspektívát bármikor manuálisan is átválthatjuk.

Íme néhány a leghasznosabb nézetekből, amelyeket ez tartalmaz:

  • Hibakeresési nézet - Ez a különböző szálakat és a hívásverem nyomokat mutatja
  • Változók nézet - Ez megmutatja a változók értékét az adott pontban. Ha meg kell látnunk a statikus változókat, akkor ezt kifejezetten meg kell határoznunk
  • Töréspontok - Ez megmutatja a különböző töréspontokat és megfigyelési pontokat (amelyeket alább látni fogunk)
  • Debug Shell - Ez lehetővé teszi számunkra, hogy hibakeresés közben egyéni kódot írjunk és értékeljünk (egy példát később ismertetünk)

3. Technikák

Ebben a részben áttekintünk néhány fontos technikát, amelyek segítenek elsajátítani a hibakeresést az Eclipse-ben.

3.1. Változók

A változók értékeit a végrehajtás során láthatjuk a Változók nézetben. A statikus változók megtekintéséhez kiválaszthatjuk a legördülő lehetőséget Java -> Statikus változók megjelenítése.

A változók nézet használatával bármely értéket a kívánt értékre lehet változtatni a végrehajtás során.

Például, ha ki kell hagynunk néhány számot, és közvetlenül a 80-as számmal kell kezdeni, akkor ezt megtehetjük a változó értékének megváltoztatásával szám:

3.2. Értékek ellenőrzése

Ha meg kell vizsgálnunk egy Java-kifejezés vagy utasítás értékét, kiválaszthatjuk az adott kifejezést a szerkesztőben, jobb gombbal kattintva és az Ellenőrzés gombra kattintva az alábbiak szerint. Egy praktikus parancsikon a találat Ctrl + Shift + I a kifejezésen az érték megtekintéséhez:

Ha arra szükségünk lenne véglegesen ellenőrizni ezt a kifejezést, jobb egérgombbal kattinthatunk és megnézhetjük. Ez most hozzáadódik a Kifejezések nézethez, és ennek a kifejezésnek az értéke különböző futásoknál látható.

3.3. Debug Shell

A hibakeresési munkamenet keretében írhatunk és futtathatunk egyedi kódot a lehetőségek értékeléséhez. Ez a Debug Shellben történik.

Például, ha ellenőriznünk kell a sqrt funkcionalitást, megtehetjük a Debug Shellben. A kódon Kattintson a jobb gombbal -> Ellenőrzés az érték megtekintéséhez:

3.4. Feltételes töréspontok

Vannak olyan esetek, amikor csak bizonyos feltételek mellett akarunk hibakeresést végezni. Ezt úgy érhetjük el, hogy a törésponthoz feltételeket adunk kétféleképpen:

  • Kattintson a jobb gombbal a töréspontra, és válassza a Töréspont tulajdonságai lehetőséget
  • Töréspont nézetben válassza ki a töréspontot és adja meg a feltételt

Például megadhatjuk a töréspontot a végrehajtás felfüggesztéséhez csak akkor, ha szám egyenlő 10:

3.5. Figyelőpontok

Mita töréspontok a módszerek, az ellenőrzési pontok az osztályszintű változók. Ebben a jelenlegi példában a töréspont be van kapcsolva evenPerfectSquareNumbers nyilatkozatot megfigyelőpontnak hívják. Most a hibakereső minden alkalommal szünetelteti a végrehajtást, amikor a mezőt elérik vagy módosítják egy figyelőponton.

Ez az alapértelmezett viselkedés, amely megváltoztatható az ellenőrzőpont tulajdonságaiban.

Ebben a példában a hibakereső minden alkalommal leállítja a végrehajtást, amikor egy tökéletes négyzet páros szám:

3.6. Trigger pontok

Tegyük fel, hogy egy összetett problémát hibakeresünk egy alkalmazásban, hatalmas mennyiségű forráskóddal. A hibakereső folyamatosan szünetelteti az áramlást a szétszórt töréspontok miatt.

Ha egy töréspontot triggerként jelölnek meg, az azt jelenti, hogy a többi töréspont csak akkor lesz engedélyezve, ha ezt a töréspontot eltalálták.

Például az alábbi képernyőképen a töréspont be van kapcsolva isPerfectSquare () állítólag a ciklus minden iterációjához el kell jutni. A töréspontot azonban itt határoztuk meg calcCount () metódus kiváltó pontként, feltétellel együtt.

Tehát, amikor az iteráció száma eléri a 10-et, ez kiváltja a többi töréspontot. Ezért mostantól kezdve, ha a töréspont tovább isPerfectSquare () megüt, a végrehajtás felfüggesztésre kerül:

3.7. Távoli hibakeresés

Végül, ha az alkalmazás az Eclipse-en kívül fut, akkor is használhatjuk a fenti funkciókat, feltéve, hogy a távoli alkalmazás lehetővé teszi a hibakeresést. Az Eclipse-ből kiválasztanánk Hibakeresés távoli Java alkalmazásként.

4. Következtetés

Ebben a gyors útmutatóban láthattuk az Eclipse IDE programjainak hibakeresési alapjait és különféle technikáit.

Mint mindig, az ebben a gyakorlatban használt forráskód elérhető a GitHubon.