Halo semuanya, komunitas JavaRush. Hari ini kita akan berbicara tentang debugging: apa itu dan bagaimana melakukan debug di Intellij IDEA. Artikel ini ditujukan bagi orang-orang yang sudah memiliki pengetahuan minim tentang Java Core. Tidak akan ada kerangka kerja atau proses rumit untuk menerbitkan perpustakaan. Jalan santai. Jadi buatlah diri Anda nyaman dan mari kita mulai!
dokumentasi file README, yang terletak di root proyek, kita membaca: perilaku yang diharapkan - dari semua bunga tempat nektar dikumpulkan (sebagai nilai ganda ), jumlah madu akan dikumpulkan sama dengan setengah dari nektar yang dikumpulkan. Proyek ini memiliki kelas-kelas berikut:
dokumentasi file README tertulis nektar berubah menjadi madu dengan perbandingan 2 banding 1:
dokumentasi README mengandung kesalahan dan perlu diperbarui. Mari perbarui file README:
hub JavaRush dengan tampilan yang cerdas :)
Mengapa Anda memerlukan Debug?
Mari kita perjelas segera: tidak ada kode tanpa bug... Beginilah cara hidup bekerja. Oleh karena itu, kita tidak boleh langsung lemas dan merelakan segalanya jika kode tersebut tidak berjalan sesuai harapan. Tapi apa yang harus dilakukan? Tentu saja, Anda dapat mengaturnyaSystem.out.println
di mana pun Anda bisa dan kemudian memilah-milah keluaran di terminal dengan harapan Anda dapat menemukan kesalahan. Namun, itu mungkin saja... dan mereka melakukannya, dan mereka melakukannya dengan hati-hati menggunakan logging (Anda dapat membacanya di sini ). Namun jika memungkinkan untuk menjalankan kode di mesin lokal, lebih baik menggunakan Debug . Saya ingin segera mencatat bahwa dalam artikel ini kami akan mempertimbangkan untuk men-debug proyek di dalam Intellij IDEA. Jika Anda tertarik membaca tentang debugging jarak jauh, berikut adalah artikel dari sumber kami .
Apa itu Debug
Debug adalah proses debugging (pemeriksaan) kode, ketika selama eksekusi Anda dapat berhenti di tempat yang ditentukan dan melihat kemajuan eksekusi. Memahami keadaan program di tempat tertentu. Ini persis sama seperti jika Anda menghentikan kehidupan dan melihat segala sesuatu dari luar. Keren, bukan? Tujuan kami adalah mempelajari cara men-debug aplikasi dengan cepat dan mudah menggunakan lingkungan pengembangan favorit kami, Intellij IDEA.Apa yang Anda perlukan untuk memulai debugging
Saya memberikan saran gratis: saat Anda membaca artikel, lakukan semua yang dijelaskan di sini, untungnya ada segalanya untuk ini. Apa yang kamu butuhkan:- Lingkungan pengembangan Intellij IDEA versi 2019.3.1 dan lebih tinggi. Jika ada yang belum memilikinya, berikut ini tautan tempat Anda dapat mengunduhnya. Unduh Edisi Komunitas karena itulah yang akan saya gunakan.
- Kloning proyek dari GitHub dan impor melalui IDEA.
Sedikit teori... aku janji :D
Untuk memulai sedikit debugging, Anda perlu memahami apa itu breakPoint dan memahami beberapa hotkey yang Anda perlukan untuk memulai. BreakPoint adalah penanda khusus yang menampilkan lokasi atau keadaan di mana aplikasi harus dihentikan. Anda dapat mengatur breakpoint dengan mengklik kiri pada sidebar kiri, atau dengan mengklik lokasi kode dan menekan Ctrl + F8 . Breakpoint hadir dalam tiga jenis: tanda garis, tanda variabel, dan tanda metode. Ini terlihat seperti ini:-
Per baris:
jika ada lambda dalam ekspresi, maka IDEA menawarkan Anda pilihan - untuk meletakkan ekspresi di seluruh baris atau secara khusus di lambda:
-
Per metode:
-
Per kelas
- Bee.java:24 - di kelas Bee di baris 24
- Main.java:14 - di kelas Utama pada baris 14
Ayo, masuk ke belantara debug
Karena saya adalah peternak lebah turun temurun, untuk presentasi debugging saya membuat proyek yang menjelaskan proses pengumpulan nektar oleh lebah, pengolahan nektar menjadi madu dan pengambilan madu dari sarangnya. Berdasarkan- Lebah - lebah pekerja biasa;
- BeeQueen - ratu lebah;
- Sarang Lebah - sarang lebah;
- HoneyPlant - tanaman madu dari mana madu dikumpulkan;
- Utama - di mana
public static void main()
metode dimulainya proyek berada.
main()
, ternyata bukan hanya jumlah madunya saja yang tidak dihitung, tapi juga muncul error... Anda perlu melihat apa yang salah di sana. Dari pelacakan tumpukan di sudut kanan bawah, kita dapat melihat bahwa di HoneyPlant.java:20
, RuntimeException dilemparkan: Inilah kasus kita: ada RuntimeException, mari tambahkan pencarian untuk pengecualian seperti dijelaskan di atas, dan jalankan main()
metode di mode debug. Untuk melakukan ini, klik panah segitiga hijau di Intellij IDEA sebelum metode main()
: dan kita akan mendapatkan program yang dihentikan pada saat sebelum pengecualian dengan ikon ini dipicu Untuk mendapatkan informasi lengkap, Anda perlu melihat di bagian Debug. Ia memiliki Variables , yang menampilkan semua variabel yang tersedia di bagian aplikasi ini:
- nektar = 1,0;
- kapasitas nektar = -1.0.
if ( nectar == 0 ) {
return 0;
}
Tapi masalahnya adalah ia memeriksa variabel yang salah... dan ini adalah bug dalam kode. Alih-alih memeriksa nilai nektar di bunga, yang ada di variabel nectarCapacity , program memeriksa nilai nektar , yang masuk ke dalam metode dan merupakan jumlah yang ingin diambil dari nektar. Ini dia, bug pertama! Oleh karena itu, kami menempatkannya dengan benar dan mendapatkan ekspresi:
if ( nectarCapacity == 0) {
return 0;
}
Selanjutnya kita jalankan main()
caranya dalam mode normal (Run `Main.main()`)
dan tidak ada error lagi, program berhasil: Aplikasi berhasil dan memberikan jawaban: “33.0 madu dihasilkan oleh 7 lebah dari 2 tanaman madu” Semuanya akan baik-baik saja, tetapi jawabannya adalah salah... Semua karena di ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
Dari cara utama terlihat tanaman madu ada dua buah masing-masing 30 dan 40 unit nektar, sehingga pada akhirnya akan diperoleh 35 unit madu. Dan dia menulis itu 33. Kemana perginya dua unit lainnya?... Sekarang kita akan mencari tahu! Untuk melakukan ini, kita perlu menempatkan breakpoint dalam metode Main.main()
pada baris No. 28, di mana ia dieksekusi beeHive.populateHoney()
dan menjalankan main
metode dalam mode Debug: Mari kita lihat lebih dekat poin ini. Program berhenti sebelum mengeksekusi baris ke-28. Di bagian bawah kita melihat bagian Debug, yang menjelaskan semua informasi tentang aplikasi yang sedang berjalan. Bagian Variabel, sebagaimana telah disebutkan, berisi semua variabel dan objek yang dapat diakses dari bagian aplikasi ini. Bagian Frames menunjukkan langkah-langkah yang dilalui aplikasi, Anda dapat melihat langkah sebelumnya dan mendapatkan semua data lokal. Agar program terus bekerja, Anda dapat menekan F9 atau ikon hijau, seperti yang ditunjukkan di bawah ini: Untuk menghentikan program, Anda perlu mengklik kotak merah: Untuk memulai ulang aplikasi dalam mode debug, Anda perlu mengklik panah: Selanjutnya, untuk menelusuri aplikasi selangkah demi selangkah, Anda dapat menggunakan dua tombol:
- F8 - buka bagian kode dan jangan masuk ke metode internal;
- F7 - buka bagian kode dan masukkan metode internal.
beeHive.populateHoney()
, kita perlu menekan F7, dan kita akan melanjutkan: Selanjutnya, kita melalui mode debug menggunakan F8 menggunakan metode ini sampai akhir dan menjelaskan apa yang terjadi dalam metode ini:
- Baris 25 - Stream API digunakan untuk mengumpulkan madu dari semua lebah;
- baris ke-26 - madu ditambahkan ke yang sudah ada;
- baris ke-27 - 2 unit madu dialokasikan untuk ratu;
- baris ke-28 - kedua unit ini dikeluarkan dari jumlah total madu;
- Baris 29 - rahim memakan madu ini.
## 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.
Selesai: semua bug yang ditemukan telah diperbaiki, kita dapat dengan tenang terus minum kopi dan membaca artikel di Meringkaskan
Dalam artikel ini kami menemukan bahwa:- tidak ada pekerjaan tanpa kesalahan dan debugging adalah cara terbaik untuk menyelesaikannya;
- apa itu breakpoint dan jenis apa yang ada;
- cara mengkonfigurasi breakpoint pengecualian;
- Cara menavigasi dalam mode debug.
Artikel untuk dibaca
- Proyek yang digunakan dalam artikel
- IntelliJ IDEA dan Debug: bukan menyelam, tapi snorkeling
- Kebenaran pahit tentang pemrograman...
- Dokumentasi resmi
- Jenis breakpoint. Dokumentasi resmi
- Bagaimana tes wawancara berubah menjadi perpustakaan sumber terbuka
- Membuat sistem pemantauan harga tiket pesawat: panduan langkah demi langkah [Bagian 1]
- Panduan untuk membuat klien untuk Skyscanner API dan memublikasikannya di jCenter dan Maven Central [Bagian 1]
- Penebangan: apa, bagaimana, dimana dan dengan apa?
GO TO FULL VERSION