KodeGym/Blog Jawa/Acak/Debugging ing IntelliJ IDEA: pandhuan pamula
John Squirrels
tingkat
San Francisco

Debugging ing IntelliJ IDEA: pandhuan pamula

Diterbitake ing grup
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! Debugging ing IntelliJ IDEA: pandhuan pamula - 1

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 nyelehake System.out.printlnstatement 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:
  1. 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.
  2. Kloning proyek GitHub iki lan ngimpor liwat IDEA.
Bukak IDEA: Debugging ing IntelliJ IDEA: pandhuan pamula - 2Pilih proyek presentasi debug banjur pencet OK . Banjur sampeyan bakal weruh jendhela ing ngisor iki: Debugging ing IntelliJ IDEA: pandhuan pamula - 3Ninggalake pilihan sing dipilih: Ngimpor proyek saka sumber eksternal lan Maven . Klik Rampung . Saiki kita wis ngimpor proyek, kita bisa njlèntrèhaké liyane saka proses karo conto urip.

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:

    Debugging ing IntelliJ IDEA: pandhuan pamula - 4

    Yen pratelan duwe ekspresi lambda, banjur IDEA njaluk sampeyan milih arep nyelehake breakpoint ing kabeh statement utawa khusus ing ekspresi lambda:

    Debugging ing IntelliJ IDEA: pandhuan pamula - 5
  • Ing metode:

    Debugging ing IntelliJ IDEA: pandhuan pamula - 6
  • Ing kelas:

    Debugging ing IntelliJ IDEA: pandhuan pamula - 7
Breakpoints bisa dibusak kanthi tindakake langkah sing padha digunakake kanggo nambah. Ana kahanan nalika sampeyan pengin mateni (bisu) dheweke. Kanggo nindakake iki, goleki Debugging ing IntelliJ IDEA: pandhuan pamula - 8lambang ing bagean Debug. Iki bakal bisu kabeh breakpoints. Kanggo ndeleng breakpoints apa sing wis disetel, sampeyan bisa pindhah menyang bagean Debug ing pojok kiwa ngisor lan golek lambang Debugging ing IntelliJ IDEA: pandhuan pamula - 9, utawa pencet Ctrl+Shift+F8 : Debugging ing IntelliJ IDEA: pandhuan pamula - 10Ngalih menyang dhaptar breakpoints, kita bakal weruh ing ngisor iki: Debugging ing IntelliJ IDEA: pandhuan pamula - 11Ana rong breakpoints kene:
  • Bee.java:24 — ing kelas Bee ing baris 24
  • Main.java:14 — ing kelas Utama baris 14
Elinga yen breakpoints iki ora bakal disetel kanthi otomatis yen sampeyan wis kloning project: sampeyan kudu nyetel dhewe! Ana uga bagean Java Exception Breakpoints . Iku banget migunani. Ing kene sampeyan bisa nambah breakpoint implisit supaya program mandheg sadurunge mbuwang pangecualian utawa pangecualian tartamtu. Kita bakal nambah breakpoint implisit kanggo RuntimeException. Iki gampang ditindakake. Temokake lambang "+" ing pojok kiwa ndhuwur. Klik ing banjur pilih Java Exception Breakpoints : Debugging ing IntelliJ IDEA: pandhuan pamula - 12Ing jendhela sing katon, tulis jeneng pangecualian sing pengin ditambahake, pilih saka dhaptar banjur klik OK : Debugging ing IntelliJ IDEA: pandhuan pamula - 13Sing nyimpulake sepisanan kita babagan carane nyetel, mula saiki kita ' bakal nerusake sawetara latihan.

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 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:
  • 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.
Yen kita mbukak main()cara, banjur kita nemokake sing ora mung program kita ora ngetung jumlah madu, iku uga mbalang pangecualian ... Debugging ing IntelliJ IDEA: pandhuan pamula - 14Kita 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: Debugging ing IntelliJ IDEA: pandhuan pamula - 15Sing 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. Debugging ing IntelliJ IDEA: pandhuan pamula - 16Akibaté, kita bakal njaluk program mandegake ing wayahe tengen sadurunge pangecualian dibuwang lan kita bakal weruh lambang iki: Debugging ing IntelliJ IDEA: pandhuan pamula - 17Debugging ing IntelliJ IDEA: pandhuan pamula - 18Kanggo 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.
Mbuwang pangecualian ndadekake akal, amarga tanduran madu ora bisa duwe jumlah nektar sing negatif. Nanging kenapa iki kedadeyan? Sawise kabeh, ing baris 15-17, priksa manawa pasokan nektar wis entek lan bali nol yen:
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: Debugging ing IntelliJ IDEA: pandhuan pamula - 19Aplikasi 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 dokumentasi file README, nektar diowahi dadi madu kanthi rasio 2 nganti 1:
## 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: Debugging ing IntelliJ IDEA: pandhuan pamula - 20Kita 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: Debugging ing IntelliJ IDEA: pandhuan pamula - 21Kanggo mungkasi program, klik ing kothak abang: Debugging ing IntelliJ IDEA: pandhuan pamula - 22Kanggo miwiti maneh aplikasi ing mode debug, klik ing panah: Debugging ing IntelliJ IDEA: pandhuan pamula - 23Luwih, 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.
Ing kasus kita, kita kudu pencet F7, kanggo langkah menyang beeHive.populateHoney()cara. Mlaku menyang, kita njaluk: Debugging ing IntelliJ IDEA: pandhuan pamula - 24Saiki 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.
Dadi ing kono rong unit sing ilang! Hore! Sawise ngomong karo analis bisnis, kita nyimpulake manawa file README dokumentasi ngemot kesalahan lan kudu dianyari. Ayo nganyari file 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.
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 Stack Overflow CodeGym :)

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

Artikel kanggo maca

Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar