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. Ang 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!
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:
dokumentasyong README file Nasusulat na ang nektar ay nagiging pulot sa isang ratio na 2 hanggang 1:
ang dokumentasyong README file ay naglalaman ng isang error at kakailanganing i-update. I-update natin ang README file:
hub na may matalinong hitsura :)
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. Ngunit ano ang gagawin? Siyempre, maaari mong itakda itoSystem.out.println
saanman 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
Ang 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:- 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.
- I-clone ang proyekto mula sa GitHub at i-import ito sa pamamagitan ng IDEA.
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:
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:
-
Bawat pamamaraan:
-
Kada klase
- Bee.java:24 - sa klase ng Bee sa linya 24
- Main.java:14 - sa Pangunahing klase sa linya 14
Tara na, pumasok tayo sa kagubatan ng debug
Dahil 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- 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.
main()
, lumalabas na hindi lamang ang halaga ng pulot ay hindi binibilang, ngunit lumilitaw din ang isang error... Kailangan 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: Ganito 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()
: at makukuha natin ang tumigil na programa sa sandaling ito bago ma-trigger ang pagbubukod sa icon na ito . 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.
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: Ang 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 ## 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 main
ang pamamaraan sa Debug mode: Tingnan 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: Upang ihinto ang programa, kailangan mong mag-click sa pulang parisukat: Upang i-restart ang application sa debug mode, kailangan mong mag-click sa arrow: Susunod, 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.
beeHive.populateHoney()
, kailangan nating pindutin ang F7, at magpapatuloy tayo: Susunod, 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.
## 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 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
- Ang proyektong ginamit sa artikulo
- IntelliJ IDEA at Debug: hindi diving, ngunit snorkeling
- Ang mapait na katotohanan tungkol sa programming...
- Opisyal na dokumentasyon
- Mga uri ng breakpoints. Opisyal na dokumentasyon
- Paano naging open-source na library ang isang pagsubok sa pakikipanayam
- Paglikha ng sistema ng pagsubaybay sa presyo ng air ticket: isang sunud-sunod na gabay [Bahagi 1]
- Gabay sa paggawa ng kliyente para sa Skyscanner API at pag-publish nito sa jCenter at Maven Central [Bahagi 1]
- Pag-log: ano, paano, saan at ano?
GO TO FULL VERSION