CodeGym /Java Blogu /Rastgele /IntelliJ IDEA'da hata ayıklama: başlangıç kılavuzu
John Squirrels
Seviye
San Francisco

IntelliJ IDEA'da hata ayıklama: başlangıç kılavuzu

grupta yayınlandı
CodeGym topluluğundaki herkese merhaba! Bugün hata ayıklama hakkında konuşalım - bu nedir ve IntelliJ IDEA'da nasıl hata ayıklanır. Bu makale, minimum düzeyde Java Core bilgisine sahip kişiler için hazırlanmıştır. Kitaplıkları yayınlamak için herhangi bir çerçeve veya karmaşık prosedür olmayacak. Rahat bir gezinti. O yüzden rahatınıza bakın ve başlayalım! IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 1

Neden Hata Ayıklama moduna ihtiyacınız var?

Hemen kendimiz için bir şeyi açıklığa kavuşturalım: hatasız kod yoktur... Hayat böyle işler. Bu nedenle, kodumuz beklediğimiz gibi çalışmadığında parçalara ayrılmamalı ve pes etmemeliyiz. Ama ne yapmalıyız? Pekala, her yere ifadeler koyabilir System.out.printlnve ardından bir hata bulma umuduyla konsol çıktısını tarayabiliriz. Bununla birlikte, dikkatli günlük kaydı kullanarak hata ayıklayabilirsiniz (ve insanlar da yapar). Ancak kodunuzu yerel bir makinede çalıştırabiliyorsanız Hata Ayıklama modunu kullanmak daha iyidir. Bu makalede IntelliJ IDEA kullanarak bir projede hata ayıklamayı ele alacağımızı hemen belirtmek isterim.

Hata ayıklama modu nedir?

Hata ayıklama modu, çalışan kodda hata ayıklama (kontrol etme) içindir. Belirlenen yerlerde yürütmeyi durdurmanıza ve işlerin nasıl ilerlediğine bakmanıza olanak tanır. Programın durumunu kodun belirli bir yerinde anlamanıza olanak tanır. Tıpkı saati durdurup her şeye yandan bakabilmek gibi. Harika, değil mi? Amacımız, sevgili IntelliJ IDEA geliştirme ortamımızı kullanarak uygulamalarda nasıl hata ayıklanacağını hızlı ve kolay bir şekilde öğrenmektir.

Hata ayıklamaya başlamak için neye ihtiyacınız var?

İşte bazı ücretsiz tavsiyeler: Bu makaleyi okurken burada açıklanan her şeyi yapın — yapmanız gereken her şeye sahipsiniz, devam edin. Neye ihtiyacın var:
  1. IntelliJ IDEA sürüm 2019.3.1 veya üzeri. Birinin buna sahip olmaması durumunda, indirebileceğiniz bir bağlantı var . Community Edition'ı indirin — kullanacağım sürüm bu.
  2. Bu GitHub projesini klonlayın ve IDEA aracılığıyla içe aktarın.
IDEA'yı açın: Hata ayıklama sunumuIntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 2 projesini seçin ve Tamam'a basın . Ardından aşağıdaki pencereyi göreceksiniz: Seçilen seçenekleri bırakın: Projeyi dış kaynaklardan içe aktar ve Maven . Son'u tıklayın . Artık projeyi içe aktardığımıza göre, sürecin geri kalanını canlı bir örnekle anlatabiliriz. IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 3

Sadece biraz teori... Söz veriyorum :D

Biraz da olsa hata ayıklamaya başlamak için kesme noktasının ne olduğunu anlamanız ve birkaç kısayol tuşuna aşina olmanız gerekir. Kesme noktası , muhtemelen uygulama durumuna bağlı olarak, uygulamanın yürütülmesinin nerede durmasını istediğinizi gösteren özel bir işarettir. Sol taraftaki panele sol tıklayarak veya kod konumuna tıklayıp Ctrl+F8 tuşlarına basarak bir kesme noktası ayarlayabilirsiniz . Üç tür kesme noktasına bakalım: satır kesme noktaları, alan izleme noktaları ve yöntem kesme noktaları. İşte böyle görünüyor:
  • Bir satırda:

    IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 4

    Bir ifadenin bir lambda ifadesi varsa, IDEA sizden kesme noktasını tüm ifadeye mi yoksa özellikle lambda ifadesine mi koyacağınızı seçmenizi ister:

    IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 5
  • Bir yöntemde:

    IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 6
  • Bir sınıfta:

    IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 7
Kesme noktaları, onları eklemek için kullanılan adımların aynısı izlenerek kaldırılabilir. Bunları devre dışı bırakmak (sessizleştirmek) isteyeceğiniz durumlar vardır. Bunu yapmak için, IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 8Hata Ayıklama bölümündeki simgeyi bulun. Bu, tüm kesme noktalarını sessize alacaktır. Hangi kesme noktalarının ayarlandığını görmek için sol alt köşedeki Hata Ayıklama bölümüne gidip simgeyi bulabilir IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 9veya Ctrl+Shift+F8 tuşlarına basabilirsiniz : IntelliJ IDEA'da hata ayıklama: başlangıç ​​kılavuzu - 10Kesme noktaları listesine giderek aşağıdakileri göreceğiz: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 11İki kesme noktası vardır . Burada:
  • Bee.java:24 — 24. satırdaki Bee sınıfında
  • Main.java:14 — Main sınıfında 14. satırda
Projeyi klonladıysanız, bu kesme noktalarının otomatik olarak ayarlanmayacağına lütfen dikkat edin: bunları kendiniz ayarlamanız gerekecek! Java İstisna Kesme Noktaları bölümü de vardır . Bu çok kullanışlı. Burada, programın herhangi bir özel durum veya belirli bir özel durum oluşturmadan önce durması için örtülü bir kesme noktası ekleyebilirsiniz. RuntimeException için örtülü bir kesme noktası ekleyeceğiz. Bunu yapmak kolaydır. Sol üst köşedeki "+" simgesini bulun. Üzerine tıklayın ve Java İstisna Kesme Noktaları'nı seçin : IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 12Görünen pencerede, eklemek istediğiniz istisnanın adını yazın, listeden seçin ve Tamam'a tıklayın : IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 13Bu, işleri nasıl kuracağımıza ilişkin ilk yazımızı bitiriyor, şimdi biz' Biraz pratik yapacağım.

Gidip hata ayıklama denen şeyi yapalım!

Uzun bir arıcı ailesinden geliyorum, bu nedenle hata ayıklamayı göstermek için oluşturduğum proje, arıların nektarı toplama, nektarı bal haline getirme ve ardından arı kovanından bal alma sürecini anlatan modelleri anlatıyor. Projenin kök dizininde yer alan dokümantasyon README dosyasına göre , nektarı toplanan tüm çiçeklerden beklenen davranış , toplanan bal miktarının ( çift şeklindedir ) yarısına eşit olmasıdır. toplanan nektar Proje aşağıdaki sınıflara sahiptir:
  • Arı - sıradan bir işçi arı
  • BeeQueen - kraliçe arı
  • Arı Kovanı - arı kovanı
  • HoneyPlant - nektarın toplandığı bir bal bitkisi (nektar kaynağı)
  • public static void main()Ana — bu , yürütmenin başladığı yöntemi bulduğumuz yerdir .
Yöntemi çalıştırırsak main(), programımızın bal miktarını hesaplamakla kalmayıp bir istisna da attığını görürüz... IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 14Sorunun ne olduğunu araştırmamız ve belirlememiz gerekir. Sağ alt köşedeki izleme yığınından, bir RuntimeException'ın atıldığını görebiliriz HoneyPlant.java:20: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 15Yukarıda bahsettiğimiz şey buydu. main()Yöntemi hata ayıklama modunda çalıştırarak bu RuntimeException'ı izleyelim . Bunu yapmak için IntelliJ IDEA'da yöntemin yanındaki yeşil üçgen okuna tıklayın main(). IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 16Sonuç olarak, istisna atılmadan hemen önceki anda programı durduracağız ve şu simgeyi göreceğiz: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 17IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 18Mevcut tüm bilgileri almak için Debug bölümüne bakmamız gerekiyor. Değişkenleri vardıruygulamanın bu bölümünde bulunan tüm değişkenleri gösteren bölme:
  • nektar = 1.0;
  • nektar Kapasitesi = -1.0.
İstisna atmak mantıklıdır, çünkü bir bal bitkisinin negatif miktarda nektarı olamaz. Ama bu neden oluyor? Sonuçta, 15-17. satırlarda nektar kaynağının tükenip bitmediğini kontrol ediyoruz ve şu durumda sıfır döndürüyoruz:

	if (nectar == 0) {
   	     return 0;
}
Ama sorun şu ki yanlış değişkeni kontrol ediyoruz. Bu koddaki bir hatadır. Program , çiçekte bulunan nektar miktarını kontrol etmek yerine (nectarCapacity değişkeninde saklanır ) , çiçekten almak istediğimiz nektar miktarı olan yöntemin nektar parametresinin değerini kontrol eder. İşte burada! İlk hatamız! Bunu düzelttikten sonra aşağıdaki kodu alıyoruz:

	if (nectarCapacity == 0) {
   	     return 0;
}
Şimdi main()yöntemi normal şekilde çalıştırın (Run 'Main.main()'). Atılan bir istisna yoktur ve program çalışır: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 19Uygulama tamamlanana kadar çalışır ve aşağıdaki yanıtı verir:

"33.0 honey was produced by 7 bees from 2 honey plants"
Şimdi her şey yoluna girecek ama bu cevap yanlış... README dosyasındaki belgelere göre nektar 2'ye 1 oranında bala dönüşüyor:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Ana yöntemde sırasıyla 30 ve 40 birim nektar içeren iki bal bitkisi vardır. Yani sonuçta 35 birim bal almalıyız. Ama program bize 33 aldığımızı söylüyor. Diğer iki birim nereye gitti? Hadi bulalım! Bunu yapmak için, Main.main()28. satırdaki yöntemde bir kesme noktası ayarlayın, burada beeHive.populateHoney()çağrılır ve main()yöntemi Hata Ayıklama modunda çalıştırın: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 20Bu noktayı daha ayrıntılı olarak ele alacağız. Program, 28. satırı çalıştırmadan önce çalışmayı durdurdu. Alt kısımda, çalışan uygulama hakkında mevcut tüm bilgileri gösteren Hata Ayıklama bölümünü görüyoruz. Daha önce bahsedildiği gibi, Değişkenler bölmesi uygulamanın bu kısmında bulunan tüm değişkenleri ve nesneleri içerir. Çerçeveler bölmesi, uygulamanın geçtiği adımları gösterir — önceki (çerçeveler) adımlara bakabilir ve tüm yerel verileri görebilirsiniz. Programı çalıştırmaya devam etmek için aşağıda gösterildiği gibi F9'a veya yeşil simgeye basabilirsiniz : IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 21Programı durdurmak için kırmızı kareye tıklayın: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 22Uygulamayı hata ayıklama modunda yeniden başlatmak için oka tıklayın: IntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 23Ayrıca, iki tuş kullanarak adım adım uygulama:
  • F8 — Yöntemlere geçmeden kodda adım adım ilerleyin;
  • F7 — Kodda adım adım ilerleyin ve yöntemlere adım adım ilerleyin.
Bizim durumumuzda, yönteme adım atmak için F7'ye basmamız gerekiyor beeHive.populateHoney(). Adım adım şunu elde ederiz: Şimdi bu yöntemi adım adım ilerletmek ve içinde ne olduğunu açıklamak için F8'iIntelliJ IDEA'da hata ayıklama: Başlangıç ​​kılavuzu - 24 kullanacağız :
  • Satır 25 — Stream API, tüm arılardan nektar toplamak için kullanılır
  • Satır 26 — Yeni oluşturulan bal mevcut bala eklenir;
  • Satır 27 — Kraliçeye 2 birim bal tahsis edilir
  • Satır 28 — Bu iki birim toplam bal miktarından çıkarılır.
  • Satır 29 — Kraliçe bu balı yer.
Demek iki kayıp birim oraya gitti! Yaşasın! Bir iş analisti ile görüştükten sonra, belgelendirme README dosyasının bir hata içerdiği ve güncellenmesi gerektiği sonucuna vardık . README dosyasını güncelleyelim:

## 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.
Yapılmıştı. Bulduğumuz tüm hataları düzelttik. Sakin bir şekilde kendini beğenmiş bir bakışla devam edebilir, biraz kahve yudumlayabilir ve Stack Overflow CodeGym'deki makaleleri okuyabiliriz :)

Özetleyelim

Bu yazıda şunları öğrendik:
  • herkesin çalışmasında hatalar vardır ve hata ayıklama, bunları düzeltmenin harika bir yoludur
  • kesme noktası nedir ve ne tür kesme noktaları vardır
  • bir istisna kesme noktası nasıl ayarlanır
  • hata ayıklama modunda kodda adım adım ilerleme

Okunacak makale

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