JavaRush /Java Blog /Random-TL /I-debug sa Intellij IDEA: isang gabay para sa mga nagsisi...

I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula

Nai-publish sa grupo
Kumusta sa lahat, komunidad ng JavaRush. Ngayon ay pag-uusapan natin ang tungkol sa pag-debug: kung ano ito at kung paano mag-debug sa Intellij IDEA. I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 1Ang artikulo ay inilaan para sa mga taong mayroon nang kaunting kaalaman sa Java Core. Walang mga balangkas o kumplikadong proseso para sa pag-publish ng mga aklatan. Madaling lakad. Kaya gawing komportable ang iyong sarili at magsimula tayo!

Bakit kailangan mo ng Debug?

Linawin natin kaagad: walang code na walang mga bug... Ganito gumagana ang buhay. Samakatuwid, hindi tayo dapat agad na maging malata at isuko ang lahat kung ang code ay hindi gumagana tulad ng ating inaasahan. I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 2Ngunit ano ang gagawin? Siyempre, maaari mong itakda ito System.out.printlnsaanman maaari at pagkatapos ay ayusin ang output sa terminal sa pag-asa na makakahanap ka ng isang error. Gayunpaman, posible ... at ginagawa nila ito, at ginagawa nila ito nang maingat gamit ang pag-log (mababasa mo ang tungkol dito ) . Ngunit kung posible na patakbuhin ang code sa lokal na makina, mas mainam na gamitin ang Debug . Gusto kong tandaan kaagad na sa artikulong ito isasaalang-alang namin ang pag-debug ng isang proyekto sa loob ng Intellij IDEA. Kung interesado kang magbasa tungkol sa malayuang pag-debug, narito ang isang artikulo mula sa aming mapagkukunan .

Ano ang Debug

I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 3Ang debug ay ang proseso ng pag-debug (pagsusuri) ng code, kapag sa panahon ng pagpapatupad nito maaari kang huminto sa isang itinalagang lugar at panoorin ang pag-usad ng pagpapatupad. Unawain ang estado ng programa sa isang tiyak na lugar. Ito ay eksaktong kapareho ng kung maaari mong ihinto ang buhay at tingnan ang lahat mula sa labas. Astig diba? Ang aming layunin ay mabilis at madaling matutunan kung paano mag-debug ng mga application gamit ang aming paboritong development environment, Intellij IDEA.

Ano ang kailangan mo upang simulan ang pag-debug

Nagbibigay ako ng libreng payo: habang binabasa mo ang artikulo, gawin ang lahat na ilalarawan dito, sa kabutihang palad mayroong lahat para dito. Ano'ng kailangan mo:
  1. Intellij IDEA development environment na bersyon 2019.3.1 at mas mataas. Kung sakaling may wala nito, narito ang isang link kung saan maaari mong i-download ito. I-download ang Community Edition dahil iyon ang gagamitin ko.
  2. I-clone ang proyekto mula sa GitHub at i-import ito sa pamamagitan ng IDEA.
Buksan ang IDEA: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 4Piliin ang debug-presentation project , i-click ang OK at kunin ang: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 5Iwanan ang pag-import ng proyekto mula sa mga panlabas na mapagkukunan, Maven at i-click ang Tapos . Ang pagkakaroon ng import ng proyekto, maaari naming ilarawan ang proseso gamit ang isang live na halimbawa.

Konting theory... Promise :D

Upang simulan ang pag-debug nang kaunti, kailangan mong maunawaan kung ano ang breakPoint at maunawaan ang ilang mga hotkey na kailangan mo upang makapagsimula. Ang BreakPoint ay isang espesyal na marker na nagpapakita ng lokasyon o estado kung saan dapat ihinto ang application. Maaari kang magtakda ng breakpoint alinman sa pamamagitan ng pag-left-click sa kaliwang sidebar, o sa pamamagitan ng pag-click sa lokasyon ng code at pagpindot sa Ctrl + F8 . Ang mga breakpoint ay may tatlong uri: line mark, variable mark, at method mark. Mukhang ganito:
  • Bawat linya:

    I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 6

    kung mayroong lambda sa expression, nag-aalok sa iyo ang IDEA ng isang pagpipilian - upang ilagay ang expression sa buong linya o partikular sa lambda:

    I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 7
  • Bawat pamamaraan:

    I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 8
  • Kada klase

    I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 9
Maaaring alisin ang mga breakpoint sa pamamagitan ng pagsunod sa parehong mga hakbang tulad ng kapag idinaragdag ang mga ito. May mga sitwasyon kung kailan kailangan mong gawin silang hindi aktibo (mute). Upang gawin ito, sa seksyong Debug, makakahanap ka ng icon I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 10na gagawing hindi aktibo ang lahat ng breakpoint. Upang makita kung anong mga breakpoint ang naitakda na, maaari kang pumunta sa Debug sa kaliwang sulok sa ibaba at hanapin ang icon Debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 11, o pindutin ang Ctrl+Shift+F8 : I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 12Kapag pumunta tayo sa listahan ng mga breakpoint, makikita natin: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 13Mayroong dalawang preakpoints dito:
  • Bee.java:24 - sa klase ng Bee sa linya 24
  • Main.java:14 - sa Pangunahing klase sa linya 14
Gusto kong tandaan na kapag nag-clone ka ng isang proyekto, hindi ka magkakaroon ng mga BreakPoints na ito: kailangan mong itakda ang mga ito sa iyong sarili! Mayroon ding seksyon ng Java Exception Breakpoints . Isang napaka-kapaki-pakinabang na bagay. Gamit ito, maaari kang magdagdag ng isang implicit na breakpoint upang ang programa ay huminto bago maghagis ng anumang pagbubukod o isang partikular na isa. Magdagdag tayo ng implicit na breakpoint para sa RuntimeException. Madali itong ginagawa: sa kaliwang sulok sa itaas ay may plus sign na "+". Mag-click dito at piliin ang Java Exceptions Breakpoints : I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 14Sa lalabas na window, isulat ang pangalan ng exception na kailangang idagdag, pumili mula sa iminungkahing listahan at i-click ang OK : Debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 15Tapusin namin ang programang pang-edukasyon na ito at magpatuloy sa pagsasanay.

Tara na, pumasok tayo sa kagubatan ng debug

I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 16Dahil namamana akong beekeeper, para sa debugging presentation ay gumawa ako ng isang proyekto na naglalarawan sa proseso ng pagkolekta ng nektar ng mga bubuyog, pagproseso ng nektar sa pulot at pagkuha ng pulot mula sa pugad. Batay sa dokumentasyon ng README file, na nasa ugat ng proyekto, nabasa namin: inaasahang pag-uugali - mula sa lahat ng mga bulaklak kung saan kinokolekta ang nektar (bilang isang dobleng halaga), isang halaga ng pulot ay kokolektahin katumbas ng kalahati ng ang nakolektang nektar. Ang proyekto ay may mga sumusunod na klase:
  • Bee - isang ordinaryong worker bee;
  • BeeQueen - reyna bubuyog;
  • BeeHive - bahay-pukyutan;
  • HoneyPlant - halaman ng pulot kung saan kinokolekta ang pulot;
  • Pangunahin - kung saan public static void main()matatagpuan ang paraan kung saan nagsisimula ang proyekto.
Kung patakbuhin mo ang pamamaraan main(), lumalabas na hindi lamang ang halaga ng pulot ay hindi binibilang, ngunit lumilitaw din ang isang error... I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 17Kailangan mong tingnan kung ano ang mali doon. Mula sa stack trace sa kanang sulok sa ibaba, makikita natin na sa HoneyPlant.java:20, may itinapon na RuntimeException: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 18Ganito talaga ang kaso natin: mayroong RuntimeException, magdagdag tayo ng paghahanap para sa naturang exception, tulad ng inilarawan sa itaas, at patakbuhin main()ang pamamaraan sa debug mode. Upang gawin ito, mag-click sa berdeng tatsulok na arrow sa Intellij IDEA bago ang pamamaraan main(): I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 19at makukuha natin ang tumigil na programa sa sandaling ito bago ma-trigger ang pagbubukod sa icon na ito I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 20Debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 21. Upang makakuha ng kumpletong impormasyon, kailangan mong tumingin sa seksyong Debug. Mayroon itong Mga Variable , na nagpapakita ng lahat ng mga variable na magagamit sa bahaging ito ng application:
  • nektar = 1.0;
  • nectarCapacity = -1.0.
Ang pagbubukod ay itinapon nang patas, dahil ang halaga ng dami ng nektar na nasa halaman ng pulot ay hindi maaaring negatibo. Ngunit bakit ito nangyayari? Pagkatapos ng lahat, mayroong isang tseke na kung ang nektar ay maubusan, pagkatapos ay isang zero na halaga ang ibabalik sa mga linya 15-17:
if ( nectar == 0 ) {
         return 0;
}
Ngunit ang catch ay na ito ay sinusuri ang maling variable... at ito ay isang bug sa code. Sa halip na suriin ang halaga ng nektar sa bulaklak, na nasa nectarCapacity variable , sinusuri ng program ang halaga ng nectar , na pumapasok sa pamamaraan at ang halagang gusto nilang kunin mula sa nektar. Narito ito, ang unang bug! Samakatuwid, inilalagay namin ito nang tama at nakuha ang expression:
if ( nectarCapacity == 0) {
         return 0;
}
Susunod, pinapatakbo namin main()ang pamamaraan sa normal na mode (Run `Main.main()`)at wala nang error, gumana ang programa: Debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 22Ang application ay nagtrabaho at nagbigay ng sagot: "33.0 honey ay ginawa ng 7 bees mula sa 2 honey plant" Magiging maayos ang lahat, ngunit ang sagot ay mali... Lahat dahil sa dokumentasyong README file Nasusulat na ang nektar ay nagiging pulot sa isang ratio na 2 hanggang 1:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Mula sa pangunahing pamamaraan makikita na mayroong dalawang halaman ng pulot, 30 at 40 na yunit ng nektar ayon sa pagkakabanggit, kaya sa huli ay dapat kang makakuha ng 35 na yunit ng pulot. At isinulat niya na 33. Saan napunta ang dalawa pang unit?... Ngayon malalaman natin! Upang gawin ito, kailangan nating maglagay ng breakpoint sa pamamaraan Main.main()sa linya No. 28, kung saan ito ay isinasagawa beeHive.populateHoney()at patakbuhin mainang pamamaraan sa Debug mode: Debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 23Tingnan natin ang puntong ito. Huminto ang programa bago isagawa ang ika-28 na linya. Sa ibaba makikita namin ang seksyong Debug, na naglalarawan sa lahat ng impormasyon sa tumatakbong application. Ang bahagi ng Mga Variable, tulad ng nabanggit na, ay naglalaman ng lahat ng mga variable at bagay na naa-access mula sa bahaging ito ng application. Ipinapakita ng bahaging Frames ang mga hakbang na pinagdadaanan ng application, maaari mong tingnan ang nakaraang hakbang at makuha ang lahat ng lokal na data. Para patuloy na gumana ang program, maaari mong pindutin ang F9 o ang berdeng icon, tulad ng ipinapakita sa ibaba: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 24Upang ihinto ang programa, kailangan mong mag-click sa pulang parisukat: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 25Upang i-restart ang application sa debug mode, kailangan mong mag-click sa arrow: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 26Susunod, upang pumunta nang sunud-sunod sa application, maaari mong gamitin ang dalawang key:
  • F8 - dumaan sa isang seksyon ng code at huwag pumunta sa mga panloob na pamamaraan;
  • F7 - dumaan sa isang seksyon ng code at ipasok ang mga panloob na pamamaraan.
Samakatuwid, upang maipasok ang pamamaraan sa pagpapatakbo beeHive.populateHoney(), kailangan nating pindutin ang F7, at magpapatuloy tayo: I-debug sa Intellij IDEA: isang gabay para sa mga nagsisimula - 27Susunod, dumaan tayo sa mode ng debug gamit ang F8 gamit ang pamamaraang ito hanggang sa dulo at ilarawan kung ano ang nangyayari sa pamamaraang ito:
  • Line 25 - Stream API ay ginagamit upang mangolekta ng pulot mula sa lahat ng mga bubuyog;
  • Ika-26 na linya - ang pulot ay idinagdag sa umiiral na isa;
  • Ika-27 na linya - 2 yunit ng pulot ang inilalaan para sa reyna;
  • Ika-28 na linya - ang dalawang yunit na ito ay tinanggal mula sa kabuuang halaga ng pulot;
  • Linya 29 - ang matris ay kumakain ng pulot na ito.
Doon napunta ang dalawang unit na ito, hurray! Pagkatapos makipag-ugnayan sa isang analyst ng negosyo, napag-isipan namin na ang dokumentasyong README file ay naglalaman ng isang error at kakailanganing i-update. I-update natin ang README file:
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
At iyon lang: naayos na ang lahat ng mga bug na natagpuan, maaari naming kalmado na ipagpatuloy ang pag-inom ng kape at pagbabasa ng mga artikulo sa JavaRush hub na may matalinong hitsura :)

Ibuod

Sa artikulong ito nalaman namin na:
  • walang trabaho nang walang mga error at ang pag-debug ay isang mahusay na paraan upang malutas ang mga ito;
  • ano ang isang breakpoint at kung anong mga uri ang mayroon ito;
  • kung paano i-configure ang exception breakpoint;
  • Paano mag-navigate sa debug mode.

Basahin ang artikulo

Tingnan din ang aking iba pang mga artikulo:
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION