Salutare tuturor din comunitatea CodeGym! Astăzi, să vorbim despre depanare — ce este și cum să depanați în IntelliJ IDEA. Acest articol este destinat persoanelor care au deja cunoștințe minime despre Java Core. Nu vor exista cadre sau proceduri complicate pentru a publica biblioteci. O plimbare lejeră. Asa ca pune-te confortabil si hai sa incepem!
Selectați proiectul de depanare-prezentare și apăsați OK . Apoi veți vedea următoarea fereastră:
Lăsați opțiunile selectate: Import proiect din surse externe și Maven . Faceți clic pe Terminare . Acum că am importat proiectul, putem descrie restul procesului cu un exemplu viu.
pictograma în secțiunea Depanare. Acest lucru va dezactiva toate punctele de întrerupere. Pentru a vedea ce puncte de întrerupere au fost setate, puteți fie să mergeți la secțiunea Depanare din colțul din stânga jos și să găsiți pictograma
, fie să apăsați Ctrl+Shift+F8 :
Trecând la lista de puncte de întrerupere, vom vedea următoarele:
Există două puncte de întrerupere Aici:
În fereastra care apare, scrieți numele excepției pe care doriți să o adăugați, selectați din listă și faceți clic pe OK :
Asta încheie introducerea noastră despre cum să setăm lucrurile, așa că acum vom" Voi trece la ceva practică.
de documentație README, care poate fi găsit în directorul rădăcină al proiectului, comportamentul așteptat al tuturor florilor din care se colectează nectar este ca cantitatea de miere colectată (care ia forma unui dublu ) să fie egală cu jumătate din nectarul colectat. Proiectul are următoarele clase:
Trebuie să investigăm și să stabilim care este problema. Din stiva de urme din colțul din dreapta jos, putem vedea că într-o RuntimeException a fost aruncată la
Despre asta vorbeam mai sus. Să urmărim această excepție RuntimeException rulând
Ca urmare, vom opri programul chiar înainte de a se arunca excepția și vom vedea această pictogramă: ![Depanare în IntelliJ IDEA: un ghid pentru începători - 17]()
Pentru a obține toate informațiile disponibile, trebuie să ne uităm în secțiunea Depanare. Are o variabilepanoul care arată toate variabilele disponibile în această parte a aplicației:
Aplicația rulează până la finalizare și oferă următorul răspuns:
de documentație , nectarul este convertit în miere într-un raport de 2 la 1:
Vom lua în considerare acest punct mai detaliat. Programul a încetat să se execute înainte de a executa linia 28. În partea de jos, vedem secțiunea Debug, care arată toate informațiile disponibile despre aplicația care rulează. După cum sa menționat deja, panoul Variabile conține toate variabilele și obiectele disponibile din această parte a aplicației. Panoul Cadre arată pașii prin care parcurge aplicația — puteți să vă uitați la pașii anteriori (cadre) și să vedeți toate datele locale. Pentru a continua rularea programului, puteți apăsa F9 sau pictograma verde, așa cum se arată mai jos:
Pentru a opri programul, faceți clic pe pătratul roșu:
Pentru a reporni aplicația în modul de depanare, faceți clic pe săgeata:
În continuare, puteți continua prin aplicația pas cu pas folosind două taste:
Acum vom folosi F8 pentru a parcurge această metodă și a descrie ce se întâmplă în ea:
de documentație conține o eroare și trebuie actualizat. Să actualizăm fișierul README:
Stack Overflow CodeGym :)

De ce aveți nevoie de modul Debug
Să clarificăm imediat ceva pentru noi înșine: nu există cod fără bug-uri... Așa funcționează viața. Deci, nu ar trebui să cădem în bucăți și să renunțăm dacă codul nostru nu funcționează așa cum ne așteptam. Dar ce ar trebui să facem? Ei bine, am putea puneSystem.out.println
instrucțiuni peste tot și apoi pieptene prin ieșirea consolei în speranța de a găsi o eroare. Acestea fiind spuse, puteți (și oamenii fac) să depanați folosind o înregistrare atentă. Dar dacă puteți rula codul pe o mașină locală, este mai bine să utilizați modul Debug . Vreau să observ imediat că în acest articol vom lua în considerare depanarea unui proiect folosind IntelliJ IDEA.
Ce este modul Debug?
Modul de depanare este pentru depanarea (verificarea) codului de rulare. Vă permite să opriți execuția în locurile desemnate și să vedeți cum evoluează lucrurile. Vă permite să înțelegeți starea programului într-un anumit loc din cod. Este ca și cum ai putea să oprești ceasul și să privești totul din lateral. Cool, nu? Obiectivul nostru este să învățăm rapid și ușor cum să depanați aplicațiile folosind îndrăgitul nostru mediu de dezvoltare IntelliJ IDEA.Ce aveți nevoie pentru a începe depanarea
Iată câteva sfaturi gratuite: în timp ce citiți acest articol, faceți tot ceea ce va fi descris aici - aveți tot ce trebuie să faceți. De ce ai nevoie:- IntelliJ IDEA versiunea 2019.3.1 sau o versiune ulterioară. În cazul în care cineva nu are acest lucru, iată un link de unde îl puteți descărca . Descărcați ediția pentru comunitate - aceasta este versiunea pe care o voi folosi.
- Clonează acest proiect GitHub și importă-l prin IDEA.


Doar putina teorie... promit :D
Pentru a începe depanarea chiar și puțin, trebuie să înțelegeți ce este un punct de întrerupere și să vă familiarizați cu câteva taste rapide. Un punct de întrerupere este un marker special care indică locul în care doriți să se oprească execuția aplicației, posibil pe baza stării aplicației. Puteți seta un punct de întrerupere fie făcând clic stânga pe panoul din stânga, fie făcând clic pe locația codului și apăsând Ctrl+F8 . Să ne uităm la trei tipuri de puncte de întrerupere: puncte de întrerupere de linie, puncte de observare a câmpului și puncte de întrerupere a metodei. Așa arată:-
Pe o linie:
Dacă o declarație are o expresie lambda, atunci IDEA vă solicită să alegeți dacă să puneți punctul de întrerupere pe întreaga declarație sau în mod specific pe expresia lambda:
-
Pe o metoda:
-
La o clasă:




- Bee.java:24 — în clasa Bee pe linia 24
- Main.java:14 — în clasa principală pe linia 14


Hai să facem chestia asta numită depanare!
Eu provin dintr-un lung șir de apicultori de familie, așa că proiectul pe care l-am creat pentru a ilustra depanarea descrie modele procesul prin care albinele colectează nectar, prelucrează nectarul în miere și apoi obțin miere din stup. Conform fișierului- Albină — o albină lucrătoare obișnuită
- BeeQueen — regina albină
- BeeHive — stupul de albine
- HoneyPlant — o plantă de miere (sursă de nectar) din care se colectează nectar
- Main — aici găsim
public static void main()
, metoda de unde începe execuția.
main()
metoda, atunci constatăm că programul nostru nu numai că nu calculează cantitatea de miere, dar mai aruncă și o excepție... 
HoneyPlant.java:20
: 
main()
metoda în modul de depanare. Pentru a face acest lucru, faceți clic pe săgeata triunghiulară verde din IntelliJ IDEA de lângă metodă main()
. 


- nectar = 1,0;
- nectarCapacity = -1,0.
if (nectar == 0) {
return 0;
}
Dar problema este că verificăm variabila greșită. Aceasta este o eroare în cod. În loc să verifice cantitatea de nectar disponibilă în floare (care este stocată în variabila nectarCapacity ), programul verifică valoarea parametrului nectar al metodei , care este cantitatea de nectar pe care dorim să o luăm din floare. Iată-l! Primul nostru bug! După ce am remediat acest lucru, obținem următorul cod:
if (nectarCapacity == 0) {
return 0;
}
Acum rulați main()
metoda în mod normal (Run 'Main.main()')
. Nu există nicio excepție, iar programul funcționează: 
"33.0 honey was produced by 7 bees from 2 honey plants"
Totul ar fi bine acum, dar acest răspuns este incorect... Conform fișierului README
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
Metoda principală are în mod clar două plante melifere cu 30 și, respectiv, 40 de unități de nectar. Deci ar trebui să ajungem în cele din urmă cu 35 de unități de miere. Dar programul ne spune că obținem 33. Unde s-au dus celelalte două unități? Să aflăm! Pentru a face acest lucru, setați un punct de întrerupere în Main.main()
metoda de pe linia 28, unde beeHive.populateHoney()
este apelată și rulați main()
metoda în modul Debug: 



- F8 — Treceți prin cod fără a intra în metode;
- F7 — Treceți prin cod și pătrundeți în metode.
beeHive.populateHoney()
metodă. Intrând în ea, obținem: 
- Linia 25 — Stream API este folosit pentru a colecta nectar de la toate albinele
- Linia 26 — Mierea nou creată este adăugată la mierea existentă;
- Linia 27 — 2 unități de miere sunt alocate reginei
- Linia 28 — Aceste două unități sunt eliminate din cantitatea totală de miere
- Linia 29 — Regina mănâncă această miere.
## 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.
Au fost efectuate. Am remediat toate erorile găsite. Putem continua cu o privire înmulțumită, să sorbim niște cafea și să citim articole despre Să rezumam
În acest articol, am învățat:- munca tuturor are erori și depanarea este o modalitate excelentă de a le remedia
- ce este un punct de întrerupere și ce tipuri de puncte de întrerupere există
- cum să setați un punct de întrerupere de excepție
- cum să parcurgeți codul în modul de depanare
GO TO FULL VERSION