CodeGym /Blog Java /Aleatoriu /Depanare în IntelliJ IDEA: un ghid pentru începători
John Squirrels
Nivel
San Francisco

Depanare în IntelliJ IDEA: un ghid pentru începători

Publicat în grup
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! Depanare în IntelliJ IDEA: un ghid pentru începători - 1

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 pune System.out.printlninstrucț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:
  1. 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.
  2. Clonează acest proiect GitHub și importă-l prin IDEA.
Deschideți IDEA: Depanare în IntelliJ IDEA: un ghid pentru începători - 2Selectați proiectul de depanare-prezentare și apăsați OK . Apoi veți vedea următoarea fereastră: Depanare în IntelliJ IDEA: un ghid pentru începători - 3Lă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.

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:

    Depanare în IntelliJ IDEA: un ghid pentru începători - 4

    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:

    Depanare în IntelliJ IDEA: un ghid pentru începători - 5
  • Pe o metoda:

    Depanare în IntelliJ IDEA: un ghid pentru începători - 6
  • La o clasă:

    Depanare în IntelliJ IDEA: un ghid pentru începători - 7
Punctele de întrerupere pot fi eliminate urmând aceiași pași folosiți pentru a le adăuga. Există situații în care veți dori să le dezactivați (dezactivați sunetul). Pentru a face acest lucru, găsiți Depanare în IntelliJ IDEA: un ghid pentru începători - 8pictograma î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 Depanare în IntelliJ IDEA: un ghid pentru începători - 9, fie să apăsați Ctrl+Shift+F8 : Depanare în IntelliJ IDEA: un ghid pentru începători - 10Trecând la lista de puncte de întrerupere, vom vedea următoarele: Depanare în IntelliJ IDEA: un ghid pentru începători - 11Există două puncte de întrerupere Aici:
  • Bee.java:24 — în clasa Bee pe linia 24
  • Main.java:14 — în clasa principală pe linia 14
Vă rugăm să rețineți că aceste puncte de întrerupere nu vor fi setate automat dacă ați clonat proiectul: va trebui să le setați singur! Există, de asemenea, o secțiune Java Exception Breakpoints . E foarte folositor. Aici puteți adăuga un punct de întrerupere implicit, astfel încât programul să se oprească înainte de a arunca orice excepție sau o anumită excepție. Vom adăuga un punct de întrerupere implicit pentru RuntimeException. Acest lucru este ușor de făcut. Găsiți pictograma „+” în colțul din stânga sus. Faceți clic pe el și selectați Java Exception Breakpoints : Depanare în IntelliJ IDEA: un ghid pentru începători - 12Î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 : Depanare în IntelliJ IDEA: un ghid pentru începători - 13Asta încheie introducerea noastră despre cum să setăm lucrurile, așa că acum vom" Voi trece la ceva practică.

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 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:
  • 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.
Dacă rulăm main()metoda, atunci constatăm că programul nostru nu numai că nu calculează cantitatea de miere, dar mai aruncă și o excepție... Depanare în IntelliJ IDEA: un ghid pentru începători - 14Trebuie 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 HoneyPlant.java:20: Depanare în IntelliJ IDEA: un ghid pentru începători - 15Despre asta vorbeam mai sus. Să urmărim această excepție RuntimeException rulând 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(). Depanare în IntelliJ IDEA: un ghid pentru începători - 16Ca 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 - 17Depanare în IntelliJ IDEA: un ghid pentru începători - 18Pentru 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:
  • nectar = 1,0;
  • nectarCapacity = -1,0.
Aruncarea excepției are sens, deoarece o plantă de miere nu poate avea o cantitate negativă de nectar. Dar de ce se întâmplă asta? La urma urmei, în rândurile 15-17, verificăm dacă rezerva de nectar este epuizată și returnăm zero dacă este:

	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ă: Depanare în IntelliJ IDEA: un ghid pentru începători - 19Aplicația rulează până la finalizare și oferă următorul răspuns:

"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 de documentație , nectarul este convertit în miere într-un raport de 2 la 1:

## 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: Depanare în IntelliJ IDEA: un ghid pentru începători - 20Vom 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: Depanare în IntelliJ IDEA: un ghid pentru începători - 21Pentru a opri programul, faceți clic pe pătratul roșu: Depanare în IntelliJ IDEA: un ghid pentru începători - 22Pentru a reporni aplicația în modul de depanare, faceți clic pe săgeata: Depanare în IntelliJ IDEA: un ghid pentru începători - 23În continuare, puteți continua prin aplicația pas cu pas folosind două taste:
  • F8 — Treceți prin cod fără a intra în metode;
  • F7 — Treceți prin cod și pătrundeți în metode.
În cazul nostru, trebuie să apăsăm F7 pentru a intra în beeHive.populateHoney()metodă. Intrând în ea, obținem: Depanare în IntelliJ IDEA: un ghid pentru începători - 24Acum vom folosi F8 pentru a parcurge această metodă și a descrie ce se întâmplă în ea:
  • 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.
Deci acolo s-au dus cele două unități dispărute! Ura! După ce am discutat cu un analist de afaceri, ajungem la concluzia că fișierul README de documentație conține o eroare și trebuie actualizat. Să actualizăm fișierul README:

## 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 Stack Overflow CodeGym :)

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

Articol de citit

Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION