Halo kabeh wong ing komunitas CodeGym! Dina iki ayo ngomong babagan debugging - apa iku lan carane debug ing IntelliJ IDEA. Artikel iki ditujokake kanggo wong sing wis duwe kawruh minimal babagan Java Core. Ora bakal ana kerangka kerja utawa prosedur sing rumit kanggo nerbitake perpustakaan. Jalan-jalan santai. Dadi gawe nyaman lan ayo miwiti!
dokumentasi , sing bisa ditemokake ing direktori oyod proyek, prilaku sing dikarepake kabeh kembang sing dikumpulake nektar yaiku jumlah madu sing diklumpukake (sing dadi dobel ) padha karo setengah saka nektar sing dikumpulake. Proyek kasebut nduweni kelas ing ngisor iki:
dokumentasi file README, nektar diowahi dadi madu kanthi rasio 2 nganti 1:
dokumentasi ngemot kesalahan lan kudu dianyari. Ayo nganyari file README:
Stack Overflow CodeGym :)
Napa sampeyan butuh mode Debug
Ayo langsung njlentrehake dhewe: ora ana kode tanpa bug ... Iki mung cara urip. Dadi, kita kudu ora ambruk lan nyerah yen kode kita ora bisa kaya sing dikarepake. Nanging apa sing kudu kita lakoni? Ya, kita bisa nyelehakeSystem.out.println
statement ing endi wae lan banjur nyisir output konsol kanthi ngarep-arep bisa nemokake kesalahan. Yen ngandika, sampeyan bisa (lan wong nindakake) debug nggunakake logging ati-ati. Nanging yen sampeyan bisa mbukak kode ing mesin lokal, iku luwih apik kanggo nggunakake mode Debug . Aku pengin langsung nyathet yen ing artikel iki kita bakal nimbang debugging proyek nggunakake IntelliJ IDEA.
Apa mode Debug?
Mode debug kanggo debugging (mriksa) kode mlaku. Iku ndadekake iku bisa kanggo sampeyan kanggo mungkasi eksekusi ing panggonan ditetepake lan ndeleng carane iku wis progressing. Ngidini sampeyan ngerti kahanan program ing panggonan tartamtu ing kode kasebut. Iku kaya bisa mungkasi jam lan ndeleng kabeh saka sisih. Kelangan, bener? Tujuane yaiku sinau kanthi cepet lan gampang carane debug aplikasi nggunakake lingkungan pangembangan IntelliJ IDEA sing ditresnani.Apa sampeyan kudu miwiti debugging
Mangkene sawetara saran gratis: nalika maca artikel iki, lakoni kabeh sing bakal diterangake ing kene — sampeyan duwe kabeh sing kudu ditindakake. Apa sing dibutuhake:- IntelliJ IDEA versi 2019.3.1 utawa luwih dhuwur. Yen ana sing ora duwe iki, kene link sing bisa didownload . Unduh Edisi Komunitas — iku versi sing bakal dakgunakake.
- Kloning proyek GitHub iki lan ngimpor liwat IDEA.
Mung teori wae... Janji :D
Kanggo miwiti debugging malah sethitik, sampeyan kudu ngerti apa breakpoint lan menowo karo sawetara tombol panas. Breakpoint minangka panandha khusus sing nuduhake ing ngendi sampeyan pengin eksekusi aplikasi mandheg, bisa uga adhedhasar status aplikasi . Sampeyan bisa nyetel breakpoint kanthi ngeklik kiwa ing panel sisih kiwa, utawa kanthi ngeklik lokasi kode banjur pencet Ctrl+F8 . Ayo ndeleng telung jinis breakpoints: breakpoints baris, watchpoints lapangan, lan lan breakpoints metode. Mangkene tampilane:-
Ing baris:
Yen pratelan duwe ekspresi lambda, banjur IDEA njaluk sampeyan milih arep nyelehake breakpoint ing kabeh statement utawa khusus ing ekspresi lambda:
-
Ing metode:
-
Ing kelas:
- Bee.java:24 — ing kelas Bee ing baris 24
- Main.java:14 — ing kelas Utama baris 14
Ayo padha nindakake perkara sing diarani debugging!
Aku teka saka baris dawa beekeepers kulawarga, supaya project aku digawe kanggo ilustrasi debugging njlèntrèhaké model proses tawon ngumpulake nectar, Processing nectar dadi madu, lan banjur njupuk madu saka beehive. Miturut file README- Tawon - tawon buruh biasa
- BeeQueen - ratuning tawon
- BeeHive - beehive
- HoneyPlant - tanduran madu (sumber nektar) saka nectar dikumpulake
- Utama — iki ngendi kita temokake
public static void main()
, cara ing ngendi eksekusi diwiwiti.
main()
cara, banjur kita nemokake sing ora mung program kita ora ngetung jumlah madu, iku uga mbalang pangecualian ... Kita kudu neliti lan nemtokake apa masalah. Saka tumpukan tilak ing sudhut tengen ngisor, kita bisa ndeleng sing ing RuntimeException di buwang ing HoneyPlant.java:20
: Sing mung apa kita padha ngomong ing ndhuwur. Ayo nonton RuntimeException iki kanthi mbukak main()
metode ing mode debug. Kanggo nindakake iki, klik panah segitiga ijo ing IntelliJ IDEA ing jejere main()
metode kasebut. Akibaté, kita bakal njaluk program mandegake ing wayahe tengen sadurunge pangecualian dibuwang lan kita bakal weruh lambang iki: Kanggo njaluk kabeh informasi sing kasedhiya, kita kudu katon ing bagean Debug. Wis Variabelpanel sing nuduhake kabeh variabel sing kasedhiya ing bagean aplikasi iki:
- nektar = 1.0;
- Kapasitas nektar = -1.0.
if (nectar == 0) {
return 0;
}
Nanging alangan yaiku kita mriksa variabel sing salah. Iki minangka kesalahan ing kode. Tinimbang mriksa jumlah nectar sing kasedhiya ing kembang (sing disimpen ing variabel nectarCapacity ), program kasebut mriksa nilai parameter nektar metode , yaiku jumlah nektar sing pengin dijupuk saka kembang. Punika! Bug pisanan kita! Sawise ndandani iki, kita entuk kode ing ngisor iki:
if (nectarCapacity == 0) {
return 0;
}
Saiki jalanake main()
metode kasebut kanthi cara normal (Run 'Main.main()')
. Ora ana pangecualian sing dibuwang, lan program kasebut bisa digunakake: Aplikasi wis rampung lan menehi jawaban ing ngisor iki:
"33.0 honey was produced by 7 bees from 2 honey plants"
Kabeh bakal apik saiki, nanging jawaban iki ora bener ... Miturut ## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
Cara utama kanthi jelas duwe rong tanduran madu kanthi 30 lan 40 unit nektar, masing-masing. Dadi kita kudu pungkasane entuk 35 unit madu. Nanging program kasebut ngandhani yen entuk 33. Ing ngendi rong unit liyane? Ayo goleki! Kanggo nindakake iki, setel breakpoint ing Main.main()
cara ing baris 28, ngendi beeHive.populateHoney()
disebut lan mbukak main()
cara ing mode Debug: Kita bakal nimbang titik iki kanthi luwih rinci. Program kasebut mandheg ngeksekusi sadurunge nglakokake baris 28. Ing sisih ngisor, kita ndeleng bagean Debug, sing nuduhake kabeh informasi sing kasedhiya babagan aplikasi sing mlaku. Kaya sing wis kasebut, panel Variabel ngemot kabeh variabel lan obyek sing kasedhiya saka bagean aplikasi iki. Panel Frame nuduhake langkah-langkah sing ditindakake aplikasi - sampeyan bisa ndeleng langkah-langkah sadurunge (bingkai) lan ndeleng kabeh data lokal. Kanggo nerusake program, sampeyan bisa mencet F9 utawa lambang ijo, kaya sing kapacak ing ngisor iki: Kanggo mungkasi program, klik ing kothak abang: Kanggo miwiti maneh aplikasi ing mode debug, klik ing panah: Luwih, sampeyan bisa nerusake liwat aplikasi langkah demi langkah nggunakake rong tombol:
- F8 - Langkah liwat kode tanpa mlaku menyang cara;
- F7 - Langkah liwat kode lan langkah menyang cara.
beeHive.populateHoney()
cara. Mlaku menyang, kita njaluk: Saiki kita bakal nggunakake F8 kanggo langkah liwat cara iki lan njlèntrèhaké apa mengkono ing:
- Baris 25 - Stream API digunakake kanggo ngumpulake nektar saka kabeh tawon
- Baris 26 - Madu sing mentas digawe ditambahake ing madu sing wis ana;
- Baris 27 - 2 unit madu diparengake kanggo ratu
- Baris 28 - Iki rong unit dicopot saka jumlah total madu
- Baris 29 - Ratu mangan madu iki.
## 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.
Kita wis rampung. Kita wis ndandani kabeh kewan omo sing ditemokake. Kita bisa kanthi tenang nerusake kanthi tampilan sombong, nyruput kopi, lan maca artikel ing Ayo ngringkes
Ing artikel iki, kita sinau:- kabeh wong duwe kesalahan lan debugging minangka cara sing apik kanggo ndandani
- apa breakpoint lan apa jinis breakpoints ana
- carane nyetel breakpoint pangecualian
- carane langkah liwat kode ing mode debug