CodeGym /Blog Java /rawak /Penyahpepijatan dalam IntelliJ IDEA: panduan pemula
John Squirrels
Tahap
San Francisco

Penyahpepijatan dalam IntelliJ IDEA: panduan pemula

Diterbitkan dalam kumpulan
Hello semua dalam komuniti CodeGym! Hari ini mari kita bercakap tentang nyahpepijat — apakah itu dan cara untuk menyahpepijat dalam IntelliJ IDEA. Artikel ini ditujukan untuk orang yang sudah mempunyai pengetahuan minimum Java Core. Tidak akan ada sebarang rangka kerja atau prosedur rumit untuk menerbitkan perpustakaan. Jalan-jalan santai. Jadi selesakan diri anda dan mari mulakan! Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 1

Mengapa anda memerlukan mod Nyahpepijat

Mari kita segera menjelaskan sesuatu untuk diri kita sendiri: tiada kod tanpa pepijat... Beginilah cara kehidupan berfungsi. Jadi, kita tidak sepatutnya berputus asa jika kod kita tidak berfungsi seperti yang kita harapkan. Tetapi apa yang harus kita lakukan? Nah, kita boleh meletakkan System.out.printlnkenyataan di mana-mana dan kemudian menyisir keluaran konsol dengan harapan dapat mencari ralat. Yang berkata, anda boleh (dan orang ramai melakukannya) nyahpepijat menggunakan pengelogan berhati-hati. Tetapi jika anda boleh menjalankan kod anda pada mesin tempatan, lebih baik menggunakan mod Nyahpepijat . Saya ingin ambil perhatian segera bahawa dalam artikel ini kita akan mempertimbangkan menyahpepijat projek menggunakan IntelliJ IDEA.

Apakah mod Debug?

Mod nyahpepijat adalah untuk menyahpepijat (menyemak) kod berjalan. Ia membolehkan anda menghentikan pelaksanaan di tempat yang ditetapkan dan melihat perkembangan keadaan. Ia membolehkan anda memahami keadaan program di tempat tertentu dalam kod. Ia seperti dapat menghentikan jam dan melihat segala-galanya dari sisi. Sejuk kan? Objektif kami adalah untuk mempelajari cara menyahpepijat aplikasi dengan cepat dan mudah menggunakan persekitaran pembangunan IntelliJ IDEA kami yang tercinta.

Perkara yang anda perlukan untuk memulakan penyahpepijatan

Berikut ialah beberapa nasihat percuma: semasa membaca artikel ini, lakukan semua yang akan diterangkan di sini — anda mempunyai semua yang perlu anda lakukan ikut serta. Apa yang anda perlukan:
  1. IntelliJ IDEA versi 2019.3.1 atau lebih tinggi. Sekiranya seseorang tidak mempunyai ini, berikut ialah pautan untuk anda memuat turunnya . Muat turun Edisi Komuniti — itulah versi yang akan saya gunakan.
  2. Klonkan projek GitHub ini dan importnya melalui IDEA.
Buka IDEA: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 2Pilih projek pembentangan nyahpepijat dan tekan OK . Kemudian anda akan melihat tetingkap berikut: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 3Tinggalkan pilihan yang dipilih: Import projek daripada sumber luaran dan Maven . Klik Selesai . Memandangkan kami telah mengimport projek itu, kami boleh menerangkan proses yang lain dengan contoh yang hidup.

Cuma teori sikit... janji :D

Untuk memulakan penyahpepijatan walaupun sedikit, anda perlu memahami apa itu titik putus dan membiasakan diri dengan beberapa kekunci panas. Titik putus ialah penanda khas yang menunjukkan di mana anda mahu pelaksanaan aplikasi dihentikan, mungkin berdasarkan keadaan aplikasi. Anda boleh menetapkan titik putus sama ada dengan mengklik kiri pada panel sebelah kiri, atau dengan mengklik pada lokasi kod dan menekan Ctrl+F8 . Mari kita lihat tiga jenis titik putus: titik putus baris, titik pantau medan dan dan titik putus kaedah. Begini rupanya:
  • Pada baris:

    Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 4

    Jika pernyataan mempunyai ungkapan lambda, maka IDEA menggesa anda untuk memilih sama ada untuk meletakkan titik putus pada keseluruhan pernyataan atau khususnya pada ungkapan lambda:

    Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 5
  • Pada kaedah:

    Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 6
  • Pada kelas:

    Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 7
Titik putus boleh dialih keluar dengan mengikuti langkah yang sama digunakan untuk menambahkannya. Terdapat situasi apabila anda ingin menyahaktifkan (membisukan) mereka. Untuk melakukan ini, cari Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 8ikon dalam bahagian Nyahpepijat. Ini akan meredamkan semua titik putus. Untuk melihat titik putus yang telah ditetapkan, anda boleh pergi ke bahagian Nyahpepijat di sudut kiri bawah dan cari ikon Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 9, atau tekan Ctrl+Shift+F8 : Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 10Bergerak ke senarai titik putus, kita akan melihat perkara berikut: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 11Terdapat dua titik putus di sini:
  • Bee.java:24 — dalam kelas Bee pada baris 24
  • Main.java:14 — dalam kelas Utama pada baris 14
Sila ambil perhatian bahawa titik putus ini tidak akan ditetapkan secara automatik jika anda telah mengklonkan projek: anda perlu menetapkannya sendiri! Terdapat juga bahagian Java Exception Breakpoints . Ia sangat berguna. Di sini anda boleh menambah titik putus tersirat supaya program berhenti sebelum melontar sebarang pengecualian atau pengecualian tertentu. Kami akan menambah titik putus tersirat untuk RuntimeException. Ini mudah dilakukan. Cari ikon "+" di penjuru kiri sebelah atas. Klik padanya dan pilih Titik Putus Pengecualian Java : Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 12Dalam tetingkap yang muncul, tulis nama pengecualian yang anda mahu tambah, pilih daripada senarai dan klik OK : Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 13Itu menyimpulkan buku asas kami tentang cara menetapkan perkara, jadi sekarang kita' akan meneruskan beberapa latihan.

Mari kita lakukan perkara yang dipanggil penyahpepijatan ini!

Saya berasal dari barisan panjang penternak lebah keluarga, jadi projek yang saya buat untuk menggambarkan penyahpepijatan menerangkan model proses lebah mengumpul nektar, memproses nektar menjadi madu, dan kemudian mendapatkan madu daripada sarang lebah. Menurut fail README dokumentasi , yang boleh didapati dalam direktori akar projek, tingkah laku yang dijangkakan bagi semua bunga dari mana nektar dikumpul adalah untuk jumlah madu yang dikumpul (yang mengambil bentuk dua kali ganda ) adalah sama dengan separuh daripada nektar yang dikumpul. Projek ini mempunyai kelas berikut:
  • Lebah — lebah pekerja biasa
  • BeeQueen - ratu lebah
  • BeeHive — sarang lebah
  • HoneyPlant — tumbuhan madu (sumber nektar) dari mana nektar dikumpul
  • Utama — di sinilah kita dapati public static void main(), kaedah di mana pelaksanaan bermula.
Jika kita menjalankan main()kaedah, maka kita mendapati bahawa program kita bukan sahaja tidak mengira jumlah madu, ia juga membuang pengecualian ... Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 14Kita perlu menyiasat dan menentukan apa masalahnya. Daripada timbunan surih di sudut kanan bawah, kita dapat melihat bahawa dalam RuntimeException dilemparkan pada HoneyPlant.java:20: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 15Itu sahaja yang kita bincangkan di atas. Mari lihat RuntimeException ini dengan menjalankan main()kaedah dalam mod nyahpepijat. Untuk melakukan ini, klik pada anak panah segitiga hijau di IntelliJ IDEA di sebelah main()kaedah. Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 16Akibatnya, kami akan menghentikan program pada masa ini sebelum pengecualian dilemparkan dan kami akan melihat ikon ini: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 17Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 18Untuk mendapatkan semua maklumat yang tersedia, kami perlu melihat dalam bahagian Nyahpepijat. Ia mempunyai Pembolehubahanak tetingkap yang menunjukkan semua pembolehubah yang tersedia dalam bahagian aplikasi ini:
  • nektar = 1.0;
  • nectarCapacity = -1.0.
Melemparkan pengecualian masuk akal, kerana tumbuhan madu tidak boleh mempunyai jumlah nektar negatif. Tetapi mengapa ini berlaku? Lagipun, dalam baris 15-17, kami menyemak sama ada bekalan nektar telah habis dan mengembalikan sifar jika:

	if (nectar == 0) {
   	     return 0;
}
Tetapi masalahnya ialah kami menyemak pembolehubah yang salah. Ini adalah ralat dalam kod. Daripada menyemak jumlah nektar yang terdapat dalam bunga (yang disimpan dalam pembolehubah nectarCapacity ), program ini menyemak nilai parameter nektar kaedah , iaitu jumlah nektar yang ingin kita ambil daripada bunga. Ini dia! Pepijat pertama kami! Selepas membetulkannya, kami mendapat kod berikut:

	if (nectarCapacity == 0) {
   	     return 0;
}
Sekarang jalankan main()kaedah dengan cara biasa (Run 'Main.main()'). Tidak ada pengecualian yang dilemparkan, dan program berfungsi: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 19Aplikasi berjalan hingga selesai dan memberikan jawapan berikut:

"33.0 honey was produced by 7 bees from 2 honey plants"
Semuanya akan baik-baik saja sekarang, tetapi jawapan ini tidak betul... Menurut dokumentasi fail README, nektar ditukar kepada madu pada nisbah 2 kepada 1:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Kaedah utama jelas mempunyai dua tumbuhan madu dengan masing-masing 30 dan 40 unit nektar. Oleh itu, kita akhirnya akan mendapat 35 unit madu. Tetapi program memberitahu kami bahawa kami mendapat 33. Ke manakah perginya dua unit yang lain? Jom ketahui! Untuk melakukan ini, tetapkan titik putus dalam Main.main()kaedah pada baris 28, di mana beeHive.populateHoney()dipanggil dan jalankan main()kaedah dalam mod Nyahpepijat: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 20Kami akan mempertimbangkan perkara ini dengan lebih terperinci. Program ini berhenti melaksanakan sebelum melaksanakan baris 28. Di bahagian bawah, kita melihat bahagian Nyahpepijat, yang menunjukkan semua maklumat yang tersedia tentang aplikasi yang sedang berjalan. Seperti yang telah disebutkan, anak tetingkap Variables mengandungi semua pembolehubah dan objek yang tersedia dari bahagian aplikasi ini. Anak tetingkap Bingkai menunjukkan langkah yang sedang dilalui oleh aplikasi — anda boleh melihat langkah (bingkai) sebelumnya dan melihat semua data setempat. Untuk terus menjalankan program, anda boleh menekan F9 atau ikon hijau, seperti yang ditunjukkan di bawah: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 21Untuk menghentikan program, klik pada petak merah: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 22Untuk memulakan semula aplikasi dalam mod nyahpepijat, klik pada anak panah: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 23Selanjutnya, anda boleh meneruskan melalui aplikasi langkah demi langkah menggunakan dua kekunci:
  • F8 — Melangkah melalui kod tanpa melangkah ke kaedah;
  • F7 — Langkah melalui kod dan langkah ke kaedah.
Dalam kes kita, kita perlu menekan F7, untuk melangkah ke beeHive.populateHoney()kaedah. Melangkah ke dalamnya, kita dapat: Penyahpepijatan dalam IntelliJ IDEA: panduan pemula - 24Sekarang kita akan menggunakan F8 untuk melangkah melalui kaedah ini dan menerangkan perkara yang berlaku di dalamnya:
  • Baris 25 — Stream API digunakan untuk mengumpul nektar daripada semua lebah
  • Baris 26 — Madu yang baru dibuat ditambah kepada madu sedia ada;
  • Talian 27 — 2 unit madu diperuntukkan untuk permaisuri
  • Baris 28 — Kedua-dua unit ini dikeluarkan daripada jumlah madu
  • Baris 29 - Ratu makan madu ini.
Jadi ke sanalah dua unit yang hilang itu pergi! Hore! Selepas bercakap 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 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.
Telah siap. Kami telah membetulkan semua pepijat yang kami temui. Kita boleh meneruskan dengan tenang dengan pandangan yang sombong, menghirup kopi dan membaca artikel mengenai Stack Overflow CodeGym :)

Mari kita ringkaskan

Dalam artikel ini, kami belajar:
  • kerja semua orang mempunyai ralat dan penyahpepijatan ialah cara terbaik untuk membetulkannya
  • apakah titik putus dan jenis titik putus yang ada
  • bagaimana untuk menetapkan titik putus pengecualian
  • bagaimana untuk melangkah melalui kod dalam mod nyahpepijat

Artikel untuk dibaca

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