Halo semuanya di komunitas CodeGym! Hari ini mari kita bicara tentang debugging — apa itu dan bagaimana cara men-debug di IntelliJ IDEA. Artikel ini ditujukan untuk orang yang sudah memiliki pengetahuan minimal tentang Java Core. Tidak akan ada kerangka kerja atau prosedur rumit untuk menerbitkan pustaka. Jalan-jalan santai. Jadi buat diri Anda nyaman dan mari kita mulai!
Pilih proyek presentasi debug dan tekan OK . Kemudian Anda akan melihat jendela berikut:
Tinggalkan opsi yang dipilih: Impor proyek dari sumber eksternal dan Maven . Klik Selesai . Sekarang kita telah mengimpor proyek, kita dapat menjelaskan proses selanjutnya dengan contoh hidup.
ikon di bagian Debug. Ini akan membisukan semua breakpoint. Untuk melihat breakpoint apa yang telah ditetapkan, Anda dapat membuka bagian Debug di pojok kiri bawah dan menemukan ikonnya
, atau tekan Ctrl+Shift+F8 :
Pindah ke daftar breakpoint, kita akan melihat yang berikut:
Ada dua breakpoint Di Sini:
Di jendela yang muncul, tulis nama pengecualian yang ingin Anda tambahkan, pilih dari daftar dan klik OK :
Itu menyimpulkan primer kami tentang cara mengatur semuanya, jadi sekarang kita' akan melanjutkan beberapa latihan.
dokumentasi , yang dapat ditemukan di direktori root proyek, perilaku yang diharapkan dari semua bunga dari mana nektar dikumpulkan adalah jumlah madu yang dikumpulkan (yang berbentuk double ) sama dengan setengahnya nektar yang terkumpul. Proyek ini memiliki kelas-kelas berikut:
Kita perlu menyelidiki dan menentukan apa masalahnya. Dari tumpukan jejak di pojok kanan bawah, kita dapat melihat bahwa RuntimeException dilemparkan ke
Itulah yang kita bicarakan di atas. Mari perhatikan RuntimeException ini dengan menjalankan
Akibatnya, kita akan menghentikan program tepat sebelum pengecualian dilemparkan dan kita akan melihat ikon ini: ![Debugging di IntelliJ IDEA: panduan pemula - 17]()
Untuk mendapatkan semua informasi yang tersedia, kita perlu melihat di bagian Debug. Ini memiliki Variabelpanel yang menampilkan semua variabel yang tersedia di bagian aplikasi ini:
Aplikasi berjalan sampai selesai dan memberikan jawaban berikut:
dokumentasi file README, nektar diubah menjadi madu dengan perbandingan 2 banding 1:
Kami akan mempertimbangkan poin ini secara lebih rinci. Program berhenti mengeksekusi sebelum mengeksekusi baris 28. Di bagian bawah, kita melihat bagian Debug, yang menampilkan semua informasi yang tersedia tentang aplikasi yang sedang berjalan. Seperti yang telah disebutkan, panel Variabel berisi semua variabel dan objek yang tersedia dari bagian aplikasi ini. Panel Bingkai menampilkan langkah-langkah yang dilalui aplikasi — Anda dapat melihat langkah (bingkai) sebelumnya dan melihat semua data lokal. Untuk melanjutkan menjalankan program, Anda dapat menekan F9 atau ikon hijau, seperti yang ditunjukkan di bawah ini:
Untuk menghentikan program, klik kotak merah:
Untuk me-restart aplikasi dalam mode debug, klik tanda panah:
Selanjutnya, Anda dapat melanjutkan melalui aplikasi langkah demi langkah menggunakan dua kunci:
Sekarang kita akan menggunakan F8 untuk menelusuri metode ini dan menjelaskan apa yang terjadi di dalamnya:
dokumentasi berisi kesalahan dan perlu diperbarui. Mari perbarui file README:
Stack Overflow CodeGym :)

Mengapa Anda memerlukan mode Debug
Mari kita segera mengklarifikasi sesuatu untuk diri kita sendiri: tidak ada kode tanpa bug... Beginilah cara hidup bekerja. Jadi, kita tidak boleh hancur berkeping-keping dan menyerah jika kode kita tidak berfungsi seperti yang kita harapkan. Tapi apa yang harus kita lakukan? Yah, kita bisa meletakkanSystem.out.println
pernyataan di mana-mana dan kemudian menyisir keluaran konsol dengan harapan menemukan kesalahan. Yang mengatakan, Anda dapat (dan orang-orang) melakukan debug menggunakan pencatatan yang cermat. Tetapi jika Anda dapat menjalankan kode Anda di mesin lokal, lebih baik menggunakan mode Debug . Saya ingin segera mencatat bahwa dalam artikel ini kami akan mempertimbangkan untuk men-debug proyek menggunakan IntelliJ IDEA.
Apa itu mode Debug?
Mode debug adalah untuk men-debug (memeriksa) kode yang sedang berjalan. Itu memungkinkan Anda untuk menghentikan eksekusi di tempat yang ditentukan dan melihat bagaimana perkembangannya. Ini memungkinkan Anda memahami keadaan program di tempat tertentu dalam kode. Ini seperti bisa menghentikan jam dan melihat segala sesuatu dari samping. Keren kan? Tujuan kami adalah mempelajari cara men-debug aplikasi dengan cepat dan mudah menggunakan lingkungan pengembangan IntelliJ IDEA tercinta.Apa yang Anda butuhkan untuk memulai debugging
Berikut beberapa saran gratis: saat membaca artikel ini, lakukan semua yang akan dijelaskan di sini — Anda memiliki semua yang perlu Anda ikuti. Apa yang kau butuhkan:- IntelliJ IDEA versi 2019.3.1 atau lebih tinggi. Jika seseorang tidak memilikinya, inilah tautan tempat Anda dapat mengunduhnya . Unduh Edisi Komunitas — itulah versi yang akan saya gunakan.
- Klon proyek GitHub ini dan impor melalui IDEA.


Hanya sedikit teori... Saya janji :D
Untuk memulai debug sedikit saja, Anda perlu memahami apa itu breakpoint dan terbiasa dengan beberapa hot key. Breakpoint adalah penanda khusus yang menunjukkan di mana Anda ingin menghentikan eksekusi aplikasi, mungkin berdasarkan status aplikasi . Anda dapat mengatur breakpoint baik dengan mengklik kiri pada panel sisi kiri, atau dengan mengklik lokasi kode dan menekan Ctrl+F8 . Mari kita lihat tiga jenis breakpoint: breakpoint garis, field watchpoint, dan dan method breakpoint. Begini tampilannya:-
Pada baris:
Jika sebuah pernyataan memiliki ekspresi lambda, maka IDEA meminta Anda untuk memilih apakah akan menempatkan breakpoint pada keseluruhan pernyataan atau secara khusus pada ekspresi lambda:
-
Pada metode:
-
Di kelas:




- Bee.java:24 — di kelas Bee di baris 24
- Main.java:14 — di kelas Utama di baris 14


Ayo lakukan hal yang disebut debugging ini!
Saya berasal dari keturunan keluarga peternak lebah, jadi proyek yang saya buat untuk mengilustrasikan debugging menjelaskan model proses lebah mengumpulkan nektar, mengolah nektar menjadi madu, dan kemudian mendapatkan madu dari sarang lebah. Menurut file README- Lebah — lebah pekerja biasa
- BeeQueen - ratu lebah
- BeeHive - sarang lebah
- HoneyPlant — tanaman madu (sumber nektar) dari mana nektar dikumpulkan
- Main — ini adalah tempat kami menemukan
public static void main()
, metode tempat eksekusi dimulai.
main()
metode tersebut, maka kita menemukan bahwa program kita tidak hanya menghitung jumlah madu, tetapi juga mengeluarkan pengecualian... 
HoneyPlant.java:20
: 
main()
metode dalam mode debug. Untuk melakukannya, klik panah segitiga hijau di IntelliJ IDEA di sebelah metode main()
. 


- nektar = 1,0;
- kapasitas nektar = -1.0.
if (nectar == 0) {
return 0;
}
Tapi masalahnya adalah kita memeriksa variabel yang salah. Ini adalah kesalahan dalam kode. Alih-alih memeriksa jumlah nektar yang tersedia di bunga (yang disimpan dalam variabel kapasitas nektar ), program memeriksa nilai parameter nektar metode , yang merupakan jumlah nektar yang ingin kita ambil dari bunga. Ini dia! Bug pertama kami! Setelah memperbaiki ini, kami mendapatkan kode berikut:
if (nectarCapacity == 0) {
return 0;
}
Sekarang jalankan main()
metode dengan cara biasa (Run 'Main.main()')
. Tidak ada pengecualian dilemparkan, dan program bekerja: 
"33.0 honey was produced by 7 bees from 2 honey plants"
Semuanya akan baik-baik saja sekarang, tetapi jawaban ini salah... Menurut
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
Metode utama jelas memiliki dua tanaman madu dengan masing-masing 30 dan 40 unit nektar. Jadi pada akhirnya kita harus mendapatkan 35 unit madu. Tapi programnya memberi tahu kita bahwa kita mendapatkan 33. Kemana perginya dua unit lainnya? Ayo cari tahu! Untuk melakukan ini, atur breakpoint dalam Main.main()
metode di baris 28, di mana beeHive.populateHoney()
dipanggil dan jalankan main()
metode dalam mode Debug: 



- F8 — Menelusuri kode tanpa masuk ke metode;
- F7 — Langkah melalui kode dan langkah ke dalam metode.
beeHive.populateHoney()
metode. Melangkah ke dalamnya, kita mendapatkan: 
- Baris 25 — Stream API digunakan untuk mengumpulkan nektar dari semua lebah
- Baris 26 — Madu yang baru dibuat ditambahkan ke madu yang sudah ada;
- Baris 27 — 2 unit madu dialokasikan untuk ratu
- Baris 28 — Kedua unit ini dikeluarkan dari jumlah total madu
- Baris 29 — Ratu memakan madu ini.
## 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.
Dilakukan. Kami telah memperbaiki semua bug yang kami temukan. Kita bisa dengan tenang melanjutkan dengan tampilan sombong, menyesap kopi, dan membaca artikel di Mari kita meringkas
Dalam artikel ini, kami belajar:- pekerjaan semua orang memiliki kesalahan dan debugging adalah cara terbaik untuk memperbaikinya
- apa itu breakpoint dan jenis breakpoint apa yang ada
- cara mengatur breakpoint pengecualian
- cara menelusuri kode dalam mode debug
GO TO FULL VERSION