JavaRush /Java Blog /Random-ID /Debug di Intellij IDEA: panduan untuk pemula

Debug di Intellij IDEA: panduan untuk pemula

Dipublikasikan di grup Random-ID
Halo semuanya, komunitas JavaRush. Hari ini kita akan berbicara tentang debugging: apa itu dan bagaimana melakukan debug di Intellij IDEA. Debug di Intellij IDEA: panduan untuk pemula - 1Artikel 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!

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. Debug di Intellij IDEA: panduan untuk pemula - 2Tapi apa yang harus dilakukan? Tentu saja, Anda dapat mengaturnya System.out.printlndi 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 di Intellij IDEA: panduan untuk pemula - 3Debug 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:
  1. 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.
  2. Kloning proyek dari GitHub dan impor melalui IDEA.
Buka IDEA: Debug di Intellij IDEA: panduan untuk pemula - 4Pilih proyek presentasi debug , klik OK dan dapatkan: Debug di Intellij IDEA: panduan untuk pemula - 5Tinggalkan proyek impor dari sumber eksternal, Maven dan klik Selesai . Setelah mengimpor proyek, kami dapat menjelaskan prosesnya menggunakan contoh langsung.

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:

    Debug di Intellij IDEA: panduan untuk pemula - 6

    jika ada lambda dalam ekspresi, maka IDEA menawarkan Anda pilihan - untuk meletakkan ekspresi di seluruh baris atau secara khusus di lambda:

    Debug di Intellij IDEA: panduan untuk pemula - 7
  • Per metode:

    Debug di Intellij IDEA: panduan untuk pemula - 8
  • Per kelas

    Debug di Intellij IDEA: panduan untuk pemula - 9
Breakpoint dapat dihilangkan dengan mengikuti langkah yang sama seperti saat menambahkannya. Ada situasi ketika Anda perlu menjadikannya tidak aktif (bisu). Untuk melakukan ini, di bagian Debug, Anda dapat menemukan ikon Debug di Intellij IDEA: panduan untuk pemula - 10yang akan membuat semua breakpoint tidak aktif. Untuk melihat breakpoint mana yang sudah disetel, Anda bisa pergi ke Debug di sudut kiri bawah dan temukan ikonnya Debug di Intellij IDEA: panduan untuk pemula - 11, atau tekan Ctrl+Shift+F8 : Debug di Intellij IDEA: panduan untuk pemula - 12Saat kita masuk ke daftar breakpoint, kita akan melihat: Debug di Intellij IDEA: panduan untuk pemula - 13Ada dua preakpoint Di Sini:
  • Bee.java:24 - di kelas Bee di baris 24
  • Main.java:14 - di kelas Utama pada baris 14
Saya ingin mencatat bahwa ketika Anda mengkloning sebuah proyek, Anda tidak akan memiliki BreakPoints ini: Anda harus mengaturnya sendiri! Ada juga bagian Java Exception Breakpoints . Suatu hal yang sangat berguna. Dengan menggunakannya, Anda dapat menambahkan breakpoint implisit sehingga program berhenti sebelum mengeluarkan pengecualian atau pengecualian tertentu. Mari tambahkan breakpoint implisit untuk RuntimeException. Caranya mudah: di pojok kiri atas ada tanda plus “+”. Klik di atasnya dan pilih Java Exceptions Breakpoints : Debug di Intellij IDEA: panduan untuk pemula - 14Di jendela yang muncul, tulis nama pengecualian yang perlu ditambahkan, pilih dari daftar yang diusulkan dan klik OK : Debug di Intellij IDEA: panduan untuk pemula - 15Kami menyelesaikan program pendidikan ini dan melanjutkan ke latihan.

Ayo, masuk ke belantara debug

Debug di Intellij IDEA: panduan untuk pemula - 16Karena 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 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:
  • 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.
Jika anda menjalankan cara tersebut main(), ternyata bukan hanya jumlah madunya saja yang tidak dihitung, tapi juga muncul error... Debug di Intellij IDEA: panduan untuk pemula - 17Anda perlu melihat apa yang salah di sana. Dari pelacakan tumpukan di sudut kanan bawah, kita dapat melihat bahwa di HoneyPlant.java:20, RuntimeException dilemparkan: Debug di Intellij IDEA: panduan untuk pemula - 18Inilah 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(): Debug di Intellij IDEA: panduan untuk pemula - 19dan kita akan mendapatkan program yang dihentikan pada saat sebelum pengecualian dengan ikon ini dipicu Debug di Intellij IDEA: panduan untuk pemula - 20Debug di Intellij IDEA: panduan untuk pemula - 21Untuk 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.
Pengecualian ini diberikan secara wajar, karena nilai jumlah nektar yang ada di dalam tanaman madu tidak boleh negatif. Namun mengapa hal ini bisa terjadi? Lagi pula, ada pemeriksaan bahwa jika nektar habis, maka nilai nol dikembalikan pada baris 15-17:
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 Debug di Intellij IDEA: panduan untuk pemula - 22dan 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 dokumentasi file README tertulis nektar berubah menjadi madu dengan perbandingan 2 banding 1:
## 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 mainmetode dalam mode Debug: Debug di Intellij IDEA: panduan untuk pemula - 23Mari 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: Debug di Intellij IDEA: panduan untuk pemula - 24Untuk menghentikan program, Anda perlu mengklik kotak merah: Debug di Intellij IDEA: panduan untuk pemula - 25Untuk memulai ulang aplikasi dalam mode debug, Anda perlu mengklik panah: Debug di Intellij IDEA: panduan untuk pemula - 26Selanjutnya, 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.
Oleh karena itu, untuk memasukkan metode ini ke dalam operasi beeHive.populateHoney(), kita perlu menekan F7, dan kita akan melanjutkan: Debug di Intellij IDEA: panduan untuk pemula - 27Selanjutnya, 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.
Ke sanalah perginya kedua unit ini, hore! Setelah berkomunikasi dengan analis bisnis, kami sampai pada kesimpulan bahwa file dokumentasi README mengandung kesalahan dan perlu diperbarui. Mari perbarui file README:
## 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 hub JavaRush dengan tampilan yang cerdas :)

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

Lihat juga artikel saya yang lain:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION