JavaRush /Blog Java /Random-MS /Nyahpepijat dalam Intellij IDEA: panduan untuk pemula

Nyahpepijat dalam Intellij IDEA: panduan untuk pemula

Diterbitkan dalam kumpulan
Hello semua, komuniti JavaRush. Hari ini kita akan bercakap tentang nyahpepijat: apakah itu dan cara untuk menyahpepijat dalam Intellij IDEA. Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 1Artikel ini bertujuan untuk orang yang sudah mempunyai pengetahuan minimum tentang Java Core. Tidak akan ada rangka kerja atau proses yang kompleks untuk menerbitkan perpustakaan. Mudah berjalan. Jadi selesakan diri anda dan mari mulakan!

Mengapa anda memerlukan Debug?

Mari jelaskan dengan segera: tiada kod tanpa pepijat... Beginilah cara kehidupan berfungsi. Oleh itu, kita tidak harus segera menjadi lemas dan melepaskan segala-galanya jika kod tidak berfungsi seperti yang kita harapkan. Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 2Tetapi apa yang perlu dilakukan? Sudah tentu, anda boleh mengarahkan System.out.printlnseboleh-bolehnya dan kemudian mencari keluaran dalam terminal dengan harapan anda akan dapat mencari ralat. Namun, ia mungkin... dan mereka melakukannya, dan mereka melakukannya dengan berhati-hati menggunakan pembalakan (anda boleh membacanya di sini ). Tetapi jika ada kemungkinan untuk menjalankan kod pada mesin tempatan, lebih baik menggunakan Debug . Saya ingin ambil perhatian segera bahawa dalam artikel ini kita akan mempertimbangkan menyahpepijat projek di dalam Intellij IDEA. Jika anda berminat untuk membaca tentang penyahpepijatan jauh, berikut ialah artikel daripada sumber kami .

Apa itu Debug

Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 3Nyahpepijat ialah proses menyahpepijat (menyemak) kod, apabila semasa pelaksanaannya anda boleh berhenti di tempat yang ditetapkan dan melihat kemajuan pelaksanaan. Memahami keadaan program di tempat tertentu. Ia betul-betul sama seolah-olah anda boleh menghentikan kehidupan dan melihat segala-galanya dari luar. Sejuk kan? Matlamat kami adalah untuk mempelajari cara menyahpepijat aplikasi dengan cepat dan mudah menggunakan persekitaran pembangunan kegemaran kami, Intellij IDEA.

Perkara yang anda perlukan untuk memulakan penyahpepijatan

Saya memberi nasihat percuma: semasa anda membaca artikel itu, lakukan semua yang akan diterangkan di sini, mujurlah ada segala-galanya untuk ini. Apa yang anda perlukan:
  1. Persekitaran pembangunan Intellij IDEA versi 2019.3.1 dan lebih tinggi. Sekiranya seseorang tidak memilikinya, berikut adalah pautan untuk anda memuat turunnya. Muat turun Edisi Komuniti kerana itulah yang saya akan gunakan.
  2. Klonkan projek daripada GitHub dan importnya melalui IDEA.
Buka IDEA: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 4Pilih projek pembentangan nyahpepijat , klik OK dan dapatkan: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 5Tinggalkan projek import daripada sumber luaran, Maven dan klik Selesai . Setelah mengimport projek, kami boleh menerangkan proses menggunakan contoh langsung.

Teori sikit... janji :D

Untuk memulakan penyahpepijatan dalam tahap yang sedikit, anda perlu memahami apa itu breakPoint dan memahami beberapa kekunci pintas yang diperlukan untuk bermula. BreakPoint ialah penanda khas yang memaparkan lokasi atau keadaan di mana aplikasi harus dihentikan. Anda boleh menetapkan titik putus sama ada dengan mengklik kiri pada bar sisi kiri, atau dengan mengklik pada lokasi kod dan menekan Ctrl + F8 . Titik putus terdapat dalam tiga jenis: label setiap baris, label setiap pembolehubah dan label setiap kaedah. Ia kelihatan seperti ini:
  • Per baris:

    Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 6

    jika terdapat lambda dalam ungkapan, maka IDEA menawarkan anda pilihan - untuk meletakkan ungkapan pada keseluruhan baris atau khususnya dalam lambda:

    Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 7
  • Setiap kaedah:

    Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 8
  • Setiap kelas

    Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 9
Titik putus boleh dialih keluar dengan mengikuti langkah yang sama seperti semasa menambahkannya. Terdapat situasi apabila anda perlu menjadikannya tidak aktif (bisu). Untuk melakukan ini, dalam bahagian Nyahpepijat, anda boleh mencari ikon Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 10yang akan menjadikan semua titik putus tidak aktif. Untuk melihat titik putus yang telah ditetapkan, anda boleh pergi ke Nyahpepijat di sudut kiri bawah dan cari ikon Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 11, atau tekan Ctrl+Shift+F8 : Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 12Apabila kita pergi ke senarai titik putus, kita akan melihat: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 13Terdapat dua titik praak di sini:
  • Bee.java:24 - dalam kelas Bee pada baris 24
  • Main.java:14 - dalam kelas Utama pada baris 14
Saya ingin ambil perhatian bahawa apabila anda mengklon projek, anda tidak akan mempunyai BreakPoints ini: anda perlu menetapkannya sendiri! Terdapat juga bahagian Java Exception Breakpoints . Satu perkara yang sangat berguna. Menggunakannya, anda boleh menambah titik putus tersirat supaya program berhenti sebelum melontar sebarang pengecualian atau pengecualian tertentu. Mari tambahkan titik putus tersirat untuk RuntimeException. Ini dilakukan dengan mudah: di sudut kiri atas terdapat tanda tambah "+". Klik padanya dan pilih Titik Putus Pengecualian Java : Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 14Dalam tetingkap yang muncul, tulis nama pengecualian yang perlu ditambah, pilih daripada senarai yang dicadangkan dan klik OK : Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 15Kami menamatkan program pendidikan ini dan teruskan berlatih.

Mari kita pergi, mari kita menceroboh hutan debug

Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 16Memandangkan saya seorang penternak lebah keturunan, untuk pembentangan penyahpepijatan saya mencipta projek yang menerangkan proses mengumpul nektar oleh lebah, memproses nektar menjadi madu dan mendapatkan madu daripada sarang. Berdasarkan dokumentasi fail README, yang terletak pada akar projek, kita membaca: tingkah laku yang dijangkakan - daripada semua bunga yang mana nektar dikumpulkan (sebagai nilai berganda ), jumlah madu akan dikumpulkan bersamaan dengan separuh daripada nektar yang dikumpul. Projek ini mempunyai kelas berikut:
  • Lebah - lebah pekerja biasa;
  • BeeQueen - ratu lebah;
  • BeeHive - sarang lebah;
  • HoneyPlant - tumbuhan madu dari mana madu dikumpulkan;
  • Utama - di mana public static void main()kaedah di mana projek bermula terletak.
Jika anda menjalankan kaedah itu main(), ternyata bukan sahaja jumlah madu tidak dikira, tetapi ralat juga muncul... Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 17Anda perlu melihat apa yang salah di sana. Daripada surih tindanan di sudut kanan bawah, kita dapat melihat bahawa dalam HoneyPlant.java:20, RuntimeException dilemparkan: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 18Ini betul-betul kes kita: terdapat RuntimeException, mari tambah carian untuk pengecualian sedemikian, seperti yang diterangkan di atas, dan jalankan main()kaedah dalam mod nyahpepijat. Untuk melakukan ini, klik pada anak panah segitiga hijau dalam Intellij IDEA sebelum kaedah main(): Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 19dan kami akan mendapat program yang dihentikan pada masa ini sebelum pengecualian dengan ikon ini dicetuskan Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 20Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 21. Untuk mendapatkan maklumat lengkap, anda perlu melihat di bahagian Nyahpepijat. Ia mempunyai Variables , yang menunjukkan semua pembolehubah yang tersedia dalam bahagian aplikasi ini:
  • nektar = 1.0;
  • nectarCapacity = -1.0.
Pengecualian dilemparkan secara adil, kerana nilai jumlah nektar yang terdapat dalam tumbuhan madu tidak boleh negatif. Tetapi mengapa ini berlaku? Lagipun, terdapat pemeriksaan bahawa jika nektar kehabisan, maka nilai sifar dikembalikan dalam baris 15-17:
if ( nectar == 0 ) {
         return 0;
}
Tetapi tangkapannya ialah ia menyemak pembolehubah yang salah... dan ini adalah pepijat dalam kod. Daripada menyemak nilai nektar dalam bunga, yang terdapat dalam pembolehubah nectarCapacity , program ini menyemak nilai nektar , yang masuk ke dalam kaedah dan merupakan jumlah yang mereka mahu ambil daripada nektar. Ini dia, pepijat pertama! Oleh itu, kami meletakkannya dengan betul dan mendapatkan ungkapan:
if ( nectarCapacity == 0) {
         return 0;
}
Seterusnya, kami menjalankan main()kaedah dalam mod biasa (Run `Main.main()`)dan tidak ada lagi ralat, program berfungsi: Aplikasi berfungsi Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 22dan memberikan jawapan: "33.0 madu dihasilkan oleh 7 lebah dari 2 tumbuhan madu" Semuanya akan baik-baik saja, tetapi jawapannya adalah salah... Semuanya kerana dalam dokumentasi fail README Ditulis bahawa nektar bertukar menjadi madu dalam nisbah 2 hingga 1:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Dari kaedah utama dapat dilihat terdapat dua pokok madu, masing-masing 30 dan 40 unit nektar, jadi akhirnya anda harus mendapat 35 unit madu. Dan dia menulis bahawa 33. Ke manakah perginya dua unit yang lain?... Sekarang kita akan mengetahuinya! Untuk melakukan ini, kita perlu meletakkan titik putus dalam kaedah Main.main()pada baris No. 28, di mana ia dilaksanakan beeHive.populateHoney()dan jalankan mainkaedah dalam mod Nyahpepijat: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 23Mari kita lihat dengan lebih dekat pada titik ini. Program berhenti sebelum melaksanakan baris ke-28. Di bahagian bawah kita melihat bahagian Nyahpepijat, yang menerangkan semua maklumat pada aplikasi yang sedang berjalan. Bahagian Pembolehubah, seperti yang telah disebutkan, mengandungi semua pembolehubah dan objek yang boleh diakses dari bahagian aplikasi ini. Bahagian Bingkai menunjukkan langkah-langkah yang dilalui oleh aplikasi, anda boleh melihat langkah sebelumnya dan mendapatkan semua data setempat. Untuk program terus berfungsi, anda boleh menekan F9 atau ikon hijau, seperti yang ditunjukkan di bawah: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 24Untuk menghentikan program, anda perlu mengklik pada petak merah: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 25Untuk memulakan semula aplikasi dalam mod nyahpepijat, anda perlu mengklik pada anak panah: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 26Seterusnya, untuk pergi langkah demi langkah melalui aplikasi, anda boleh menggunakan dua kekunci:
  • F8 - pergi melalui bahagian kod dan jangan pergi ke kaedah dalaman;
  • F7 - pergi melalui bahagian kod dan masukkan kaedah dalaman.
Oleh itu, untuk memasukkan kaedah ke dalam operasi beeHive.populateHoney(), kita perlu menekan F7, dan kita akan meneruskan: Nyahpepijat dalam Intellij IDEA: panduan untuk pemula - 27Seterusnya, kita melalui mod nyahpepijat menggunakan F8 menggunakan kaedah ini hingga akhir dan menerangkan perkara yang berlaku dalam kaedah ini:
  • Baris 25 - Stream API digunakan untuk mengumpul madu daripada semua lebah;
  • Baris ke-26 - madu ditambah kepada yang sedia ada;
  • Baris ke-27 - 2 unit madu diperuntukkan untuk ratu;
  • Baris ke-28 - kedua-dua unit ini dikeluarkan daripada jumlah madu;
  • Baris 29 - rahim makan madu ini.
Di situlah dua unit ini pergi, hurray! Selepas berkomunikasi dengan penganalisis perniagaan, kami membuat kesimpulan bahawa fail README dokumentasi mengandungi ralat dan perlu dikemas kini. Mari kemas kini fail 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.
Dan itu sahaja: semua pepijat yang ditemui telah diperbaiki, kami boleh terus minum kopi dan membaca artikel di hab JavaRush dengan tenang dengan pandangan yang bijak :)

ringkaskan

Dalam artikel ini kami mendapati bahawa:
  • tiada kerja tanpa ralat dan penyahpepijatan adalah cara terbaik untuk menyelesaikannya;
  • apakah titik putus dan jenis apa yang wujud;
  • bagaimana untuk mengkonfigurasi titik putus pengecualian;
  • Bagaimana untuk menavigasi dalam mod nyahpepijat.

Artikel untuk dibaca

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