Üdv mindenkinek a CodeGym közösségben! Ma beszéljünk a hibakeresésről – mi az, és hogyan lehet hibakeresni az IntelliJ IDEA-ban. Ez a cikk azoknak szól, akik már rendelkeznek minimális ismeretekkel a Java Core-ról. Nem lesz semmilyen keretrendszer vagy bonyolult eljárás a könyvtárak közzétételéhez. Nyugodt séta. Helyezze magát kényelembe, és kezdjük!
Válassza ki a hibakeresési bemutató projektet, és nyomja meg az OK gombot . Ezután a következő ablak jelenik meg:
Hagyja meg a kiválasztott opciókat: Projekt importálása külső forrásból és Maven . Kattintson a Befejezés gombra . Most, hogy importáltuk a projektet, leírhatjuk a folyamat többi részét egy élő példával.
ikont a Hibakeresés részben. Ez elnémítja az összes töréspontot. A beállított töréspontok megtekintéséhez lépjen a bal alsó sarokban található Hibakeresés szakaszba, és keresse meg az
ikont, vagy nyomja meg a Ctrl+Shift+F8 billentyűket :
A töréspontok listájára lépve a következőket fogjuk látni:
Két töréspont van. itt:
A megjelenő ablakban írja be a hozzáadni kívánt kivétel nevét, válassza ki a listából, majd kattintson az OK gombra :
Ezzel befejeződik az alapozónk a dolgok beállításáról, így most Majd folytatom a gyakorlatot.
dokumentációs README fájl szerint az összes virág várható viselkedése , amelyből a nektárt gyűjtik, a begyűjtött méz mennyisége (amely kétszeres alakban jelenik meg ) a méz felével egyenlő. az összegyűjtött nektárt. A projekt a következő osztályokkal rendelkezik:
kell vizsgálni és meg kell határozni, hogy mi a probléma. A jobb alsó sarokban lévő nyomkövetési veremből láthatjuk, hogy egy RuntimeException-ben dobták
Pont erről beszéltünk fent. Figyeljük meg ezt a RuntimeException kivételt úgy, hogy a
Ennek eredményeként a programot azonnal leállítjuk, közvetlenül a kivétel megjelenése előtt, és ezt az ikont fogjuk látni: Az ![Hibakeresés az IntelliJ IDEA-ban: útmutató kezdőknek - 17]()
összes elérhető információ eléréséhez meg kell keresnünk a Debug részt. Van benne Változóablaktábla, amely az alkalmazás ezen részében elérhető összes változót mutatja:
Az alkalmazás lefut, és a következő választ adja:
Most már minden rendben lenne, de ez a válasz helytelen... A dokumentációs README fájl szerint a nektár 2:1 arányban alakul mézsá:
Ezt a pontot részletesebben megvizsgáljuk. A program a 28. sor végrehajtása előtt leállt. Az alsó részben a Debug részt látjuk, amely a futó alkalmazásról elérhető összes információt mutatja. Amint már említettük, a Változók ablaktábla tartalmazza az alkalmazás ezen részéből elérhető összes változót és objektumot. A Keretek ablaktábla azokat a lépéseket mutatja, amelyeken az alkalmazás átmegy – megtekintheti a korábbi (keretek) lépéseket, és megtekintheti az összes helyi adatot. A program futtatásának folytatásához nyomja meg az F9 vagy a zöld ikont, az alábbi módon:
A program leállításához kattintson a piros négyzetre:
Az alkalmazás hibakeresési módban történő újraindításához kattintson a nyílra:
Tovább folytathatja a következőt : az alkalmazás lépésről lépésre két kulcs használatával:
billentyűvel lépjünk át ezen a módszeren, és írjuk le, mi történik benne:
dokumentáció README fájlja hibát tartalmaz, és frissítésre szorul. Frissítsük a README fájlt:
Stack Overflow CodeGymről :)

Miért van szüksége hibakeresési módra?
Azonnal tisztázzunk valamit magunknak: nincs kód hibák nélkül... Csak így működik az élet. Tehát nem szabad darabokra hullani és feladni, ha a kódunk nem úgy működik, ahogy vártuk. De mit tegyünk? Nos, mindenhova elhelyezhetnénkSystem.out.println
utasításokat, majd átfésülhetjük a konzol kimenetét abban a reményben, hogy hibát találunk. Ennek ellenére gondos naplózással hibakeresést végezhet (és az emberek ezt teszik). De ha le tudja futtatni a kódot egy helyi gépen, akkor jobb, ha a Debug módot használja. Azonnal szeretném megjegyezni, hogy ebben a cikkben megfontoljuk egy projekt hibakeresését az IntelliJ IDEA használatával.
Mi az a hibakeresési mód?
A hibakeresési mód a futó kód hibakeresésére (ellenőrzésére) szolgál. Lehetővé teszi, hogy a kijelölt helyeken leállítsa a végrehajtást, és megnézze, hogyan haladnak a dolgok. Lehetővé teszi a program állapotának megértését a kód egy adott helyén. Olyan ez, mintha meg tudnánk állítani az órát, és mindent oldalról nézni. Menő, igaz? Célunk, hogy gyorsan és egyszerűen megtanuljuk, hogyan lehet alkalmazások hibakeresését elvégezni szeretett IntelliJ IDEA fejlesztői környezetünk segítségével.Mi kell a hibakeresés megkezdéséhez
Íme néhány ingyenes tanács: e cikk olvasása közben tegyen meg mindent, amit itt leírunk – minden megvan, amit tennie kell. Amire szükséged van:- IntelliJ IDEA 2019.3.1 vagy újabb verzió. Ha valakinek nem lenne ilyen, itt egy link, ahonnan letöltheti . Töltse le a Community Edition-t – ezt a verziót fogom használni.
- Klónozza ezt a GitHub-projektet , és importálja az IDEA-n keresztül.


Csak egy kis elmélet... ígérem :D
Ahhoz, hogy egy kicsit is elkezdhesse a hibakeresést, meg kell értenie, mi az a töréspont , és ismernie kell néhány gyorsbillentyűt. A töréspont egy speciális jelölő, amely jelzi, hogy hol szeretné leállítani az alkalmazás végrehajtását, esetleg az alkalmazás állapota alapján. A töréspontot úgy állíthatja be, hogy a bal oldali panelen bal egérgombbal kattint, vagy kattintson a kód helyére és nyomja meg a Ctrl+F8 billentyűkombinációt . Nézzük meg a töréspontok három típusát: vonaltöréspontokat, terepi figyelési pontokat és metódustöréspontokat. Így néz ki:-
Egy vonalon:
Ha egy utasításnak lambda-kifejezése van, akkor az IDEA kéri, hogy válassza ki, hogy a töréspontot a teljes utasításra vagy konkrétan a lambda-kifejezésre helyezi-e el:
-
Egy módszerről:
-
Egy osztályon:




- Bee.java:24 — a Bee osztályban a 24-es vonalon
- Main.java:14 — a Fő osztályban a 14. sorban


Tegyük ezt a hibakeresésnek nevezett dolgot!
Családi méhészek hosszú sorából származom, ezért a hibakeresés szemléltetésére létrehozott projekt a méhek nektárgyűjtésének, mézké feldolgozásának, majd a méhkaptárból való mézszerzésnek a folyamatát írja le. A projekt gyökérkönyvtárában található- Méh — közönséges munkásméh
- BeeQueen – a méhkirálynő
- BeeHive — a méhkas
- HoneyPlant – méznövény (nektárforrás), amelyből nektárt gyűjtenek
- Fő – itt találjuk
public static void main()
a , a végrehajtás megkezdésének módszerét.
main()
módszert, akkor azt tapasztaljuk, hogy a programunk nemcsak hogy nem számolja ki a méz mennyiségét, hanem kivételt is dob... Ki 
HoneyPlant.java:20
: : 
main()
metódust hibakeresési módban futtatjuk. Ehhez kattintson a zöld háromszög nyílra az IntelliJ IDEA-ban a main()
metódus mellett. 


- nektár = 1,0;
- nektárKapacitás = -1,0.
if (nectar == 0) {
return 0;
}
De az a baj, hogy rossz változót ellenőrizünk. Ez egy hiba a kódban. A program ahelyett, hogy a virágban elérhető nektár mennyiségét ellenőrizné (amely a nectarCapacity változóban van tárolva), a módszer nektár paraméterének értékét ellenőrzi, ami az a nektár mennyisége, amelyet a virágból szeretnénk kivenni. Itt van! Az első bugunk! A javítás után a következő kódot kapjuk:
if (nectarCapacity == 0) {
return 0;
}
Most futtassa a main()
módszert a szokásos módon (Run 'Main.main()')
. Nincs kivétel, és a program működik: 
"33.0 honey was produced by 7 bees from 2 honey plants"
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
A fő módszer egyértelműen két mézelő növényt tartalmaz 30, illetve 40 egységnyi nektárral. Tehát végül 35 egységnyi mézhez kell jutnunk. De a program azt mondja, hogy 33-at kapunk. Hová tűnt a másik két egység? Találjuk ki! Ehhez állítson be egy töréspontot a metódusban Main.main()
a 28. sorban, ahol beeHive.populateHoney()
meghívásra kerül, és futtassa a main()
metódust Debug módban: 



- F8 – Lépjen végig a kódon anélkül, hogy metódusokba lépne;
- F7 – Lépjen át a kódon, és lépjen be a metódusokba.
beeHive.populateHoney()
metódusba. Belépve a következőt kapjuk: Most az F8
- 25. sor – A Stream API-t az összes méh nektárjának gyűjtésére használják
- 26. sor – Az újonnan létrehozott mézet hozzáadják a meglévő mézhez;
- 27. sor – 2 egység mézet osztanak ki a királynőnek
- 28. sor – Ezt a két egységet eltávolítják a teljes mézmennyiségből
- 29. sor – A királynő megeszi ezt a mézet.
## Documentation
Presentation based on honey production.
**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Végeztünk. Az összes talált hibát kijavítottuk. Nyugodtan folytathatjuk önelégült tekintettel, kortyolhatunk egy kávét, és olvashatunk cikkeket a Foglaljuk össze
Ebből a cikkből megtudtuk:- mindenki munkájában vannak hibák, és a hibakeresés nagyszerű módja a javításuknak
- mi az a töréspont és milyen típusú töréspontok léteznek
- hogyan állíthat be kivétel töréspontot
- hogyan léphet át a kódon hibakeresési módban
GO TO FULL VERSION