CodeGym /Java Blog /Acak /Debugging di IntelliJ IDEA: panduan pemula
John Squirrels
Level 41
San Francisco

Debugging di IntelliJ IDEA: panduan pemula

Dipublikasikan di grup Acak
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! Debugging di IntelliJ IDEA: panduan pemula - 1

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 meletakkan System.out.printlnpernyataan 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:
  1. 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.
  2. Klon proyek GitHub ini dan impor melalui IDEA.
Buka IDEA: Debugging di IntelliJ IDEA: panduan pemula - 2Pilih proyek presentasi debug dan tekan OK . Kemudian Anda akan melihat jendela berikut: Debugging di IntelliJ IDEA: panduan pemula - 3Tinggalkan 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.

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:

    Debugging di IntelliJ IDEA: panduan pemula - 4

    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:

    Debugging di IntelliJ IDEA: panduan pemula - 5
  • Pada metode:

    Debugging di IntelliJ IDEA: panduan pemula - 6
  • Di kelas:

    Debugging di IntelliJ IDEA: panduan pemula - 7
Breakpoints dapat dihapus dengan mengikuti langkah yang sama yang digunakan untuk menambahkannya. Ada situasi ketika Anda ingin menonaktifkan (membisukan) mereka. Untuk melakukan ini, temukan Debugging di IntelliJ IDEA: panduan pemula - 8ikon 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 Debugging di IntelliJ IDEA: panduan pemula - 9, atau tekan Ctrl+Shift+F8 : Debugging di IntelliJ IDEA: panduan pemula - 10Pindah ke daftar breakpoint, kita akan melihat yang berikut: Debugging di IntelliJ IDEA: panduan pemula - 11Ada dua breakpoint Di Sini:
  • Bee.java:24 — di kelas Bee di baris 24
  • Main.java:14 — di kelas Utama di baris 14
Perlu diperhatikan bahwa breakpoint ini tidak akan disetel secara otomatis jika Anda telah mengkloning proyek: Anda harus menyetelnya sendiri! Ada juga bagian Java Exception Breakpoints . Itu sangat berguna. Di sini Anda dapat menambahkan breakpoint implisit sehingga program berhenti sebelum melemparkan pengecualian apa pun atau pengecualian tertentu. Kami akan menambahkan breakpoint implisit untuk RuntimeException. Ini mudah untuk dilakukan. Temukan ikon "+" di sudut kiri atas. Klik di atasnya dan pilih Java Exception Breakpoints : Debugging di IntelliJ IDEA: panduan pemula - 12Di jendela yang muncul, tulis nama pengecualian yang ingin Anda tambahkan, pilih dari daftar dan klik OK : Debugging di IntelliJ IDEA: panduan pemula - 13Itu menyimpulkan primer kami tentang cara mengatur semuanya, jadi sekarang kita' akan melanjutkan beberapa latihan.

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 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:
  • 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.
Jika kita menjalankan main()metode tersebut, maka kita menemukan bahwa program kita tidak hanya menghitung jumlah madu, tetapi juga mengeluarkan pengecualian... Debugging di IntelliJ IDEA: panduan pemula - 14Kita perlu menyelidiki dan menentukan apa masalahnya. Dari tumpukan jejak di pojok kanan bawah, kita dapat melihat bahwa RuntimeException dilemparkan ke HoneyPlant.java:20: Debugging di IntelliJ IDEA: panduan pemula - 15Itulah yang kita bicarakan di atas. Mari perhatikan RuntimeException ini dengan menjalankan main()metode dalam mode debug. Untuk melakukannya, klik panah segitiga hijau di IntelliJ IDEA di sebelah metode main(). Debugging di IntelliJ IDEA: panduan pemula - 16Akibatnya, kita akan menghentikan program tepat sebelum pengecualian dilemparkan dan kita akan melihat ikon ini: Debugging di IntelliJ IDEA: panduan pemula - 17Debugging di IntelliJ IDEA: panduan pemula - 18Untuk mendapatkan semua informasi yang tersedia, kita perlu melihat di bagian Debug. Ini memiliki Variabelpanel yang menampilkan semua variabel yang tersedia di bagian aplikasi ini:
  • nektar = 1,0;
  • kapasitas nektar = -1.0.
Melempar pengecualian masuk akal, karena tanaman madu tidak boleh memiliki nektar dalam jumlah negatif. Tetapi mengapa ini terjadi? Lagi pula, pada baris 15-17, kami memeriksa apakah persediaan nektar habis dan mengembalikan nol jika:

	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: Debugging di IntelliJ IDEA: panduan pemula - 19Aplikasi berjalan sampai selesai dan memberikan jawaban berikut:

"33.0 honey was produced by 7 bees from 2 honey plants"
Semuanya akan baik-baik saja sekarang, tetapi jawaban ini salah... Menurut dokumentasi file README, nektar diubah menjadi madu dengan perbandingan 2 banding 1:

## 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: Debugging di IntelliJ IDEA: panduan pemula - 20Kami 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: Debugging di IntelliJ IDEA: panduan pemula - 21Untuk menghentikan program, klik kotak merah: Debugging di IntelliJ IDEA: panduan pemula - 22Untuk me-restart aplikasi dalam mode debug, klik tanda panah: Debugging di IntelliJ IDEA: panduan pemula - 23Selanjutnya, Anda dapat melanjutkan melalui aplikasi langkah demi langkah menggunakan dua kunci:
  • F8 — Menelusuri kode tanpa masuk ke metode;
  • F7 — Langkah melalui kode dan langkah ke dalam metode.
Dalam kasus kami, kami perlu menekan F7, untuk masuk ke beeHive.populateHoney()metode. Melangkah ke dalamnya, kita mendapatkan: Debugging di IntelliJ IDEA: panduan pemula - 24Sekarang kita akan menggunakan F8 untuk menelusuri metode ini dan menjelaskan apa yang terjadi di dalamnya:
  • 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.
Jadi ke sanalah dua unit yang hilang itu pergi! Hore! Setelah berbicara dengan analis bisnis, kami menyimpulkan bahwa file README dokumentasi berisi kesalahan dan perlu diperbarui. Mari perbarui 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.
Dilakukan. Kami telah memperbaiki semua bug yang kami temukan. Kita bisa dengan tenang melanjutkan dengan tampilan sombong, menyesap kopi, dan membaca artikel di Stack Overflow CodeGym :)

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

Artikel untuk dibaca

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION