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.