JavaRush /Java Blogu /Random-AZ /Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi
Roman Beekeeper
Səviyyə

Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi

Qrupda dərc edilmişdir
Hər kəsə salam, JavaRush icması. Bu gün biz sazlama haqqında danışacağıq: bu nədir və Intellij IDEA-da necə debug etmək olar. Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 1Məqalə artıq Java Core haqqında minimal biliyə malik insanlar üçün nəzərdə tutulub. Kitabxanaların nəşri üçün heç bir çərçivə və ya mürəkkəb proseslər olmayacaq. Asan gəzinti. Beləliklə, özünüzü rahatlaşdırın və başlayaq!

Niyə Debug lazımdır?

Dərhal aydınlaşdıraq: səhvsiz kod yoxdur... Həyat belə işləyir. Buna görə də, kod gözlədiyimiz kimi işləməsə, dərhal axsamamalı və hər şeydən əl çəkməməliyik. Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 2Amma nə etməli? Əlbəttə ki, System.out.printlnistədiyiniz yerdə təyin edə bilərsiniz və sonra bir səhv tapa biləcəyiniz ümidi ilə terminalda çıxışı çeşidləyə bilərsiniz. Yenə də mümkündür... və onlar bunu edirlər və bunu girişdən istifadə edərək diqqətlə edirlər (bu barədə burada oxuya bilərsiniz ). Ancaq kodu yerli maşında işə salmaq mümkündürsə, Debug istifadə etmək daha yaxşıdır . Dərhal qeyd etmək istərdim ki, bu məqalədə Intellij IDEA daxilində bir layihənin sazlanmasını nəzərdən keçirəcəyik. Uzaqdan sazlama haqqında oxumaq istəyirsinizsə, burada resursumuzdan bir məqalə var .

Debug nədir

Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 3Debug kodun düzəldilməsi (yoxlanması) prosesidir, onun icrası zamanı təyin olunmuş yerdə dayanıb icra prosesini izləyə bilərsiniz. Müəyyən bir yerdə proqramın vəziyyətini anlayın. Bu, sanki həyatı dayandırıb hər şeyə kənardan baxmaqla eynidir. Əla, hə? Məqsədimiz sevimli inkişaf mühitimiz olan Intellij IDEA-dan istifadə edərək proqramları tez və asanlıqla aradan qaldırmağı öyrənməkdir.

Sazlamağa başlamaq üçün nə lazımdır

Pulsuz məsləhət verirəm: məqaləni oxuyarkən burada təsvir ediləcək hər şeyi edin, xoşbəxtlikdən bunun üçün hər şey var. Sizə nə lazımdır:
  1. Intellij IDEA inkişaf mühiti versiyası 2019.3.1 və daha yüksək. Əgər kimsədə yoxdursa, onu yükləyə biləcəyiniz bir keçid var. İcma Buraxılışını endirin, çünki mən bundan istifadə edəcəyəm.
  2. Layihəni GitHub-dan klonlayın və IDEA vasitəsilə idxal edin.
IDEA-nı açın: Debuq-təqdimatIntellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 4 layihəsini seçin , OK düyməsini basın və əldə edin: Xarici mənbələrdən idxal layihəsini tərk edin , Maven və Bitir düyməsini basın . Layihəni idxal etdikdən sonra canlı nümunədən istifadə edərək prosesi təsvir edə bilərik. Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 5

Bir az nəzəriyyə... Söz verirəm :D

Bir az sazlamaya başlamaq üçün breakPoint-in nə olduğunu başa düşməlisiniz və başlamaq üçün lazım olan bir neçə isti düymələri başa düşməlisiniz. BreakPoint tətbiqin dayandırılmalı olduğu yeri və ya vəziyyəti göstərən xüsusi markerdir. Siz ya sol kənar paneldə siçanın sol düyməsini sıxmaqla, ya da kodun yerini tıklayarak və Ctrl + F8 düymələrini sıxmaqla kəsilmə nöqtəsini təyin edə bilərsiniz . Kəsmə nöqtələri üç növdə olur: xətt işarəsi, dəyişən işarəsi və metod işarəsi. Bu belə görünür:
  • Hər sətir:

    Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 6

    ifadədə lambda varsa, IDEA sizə seçim təklif edir - ifadəni bütün xəttə və ya konkret olaraq lambdaya yerləşdirmək:

    Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 7
  • Metod üzrə:

    Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 8
  • Sinif üzrə

    Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 9
Kəsmə nöqtələri onları əlavə edərkən olduğu kimi eyni addımları yerinə yetirməklə silinə bilər. Onları qeyri-aktiv etmək lazım olan vəziyyətlər var (lal). Bunu etmək üçün, Debug bölməsində, Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 10bütün kəsmə nöqtələrini qeyri-aktiv edəcək bir simvol tapa bilərsiniz. Hansı kəsilmə nöqtələrinin artıq təyin edildiyini görmək üçün ya aşağı sol küncdəki Debug bölməsinə keçib simvolu tapa bilərsiniz Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 11, ya da Ctrl+Shift+F8 düymələrini sıxın : Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi - 12Biz kəsilmə nöqtələrinin siyahısına daxil olanda biz görəcəksiniz: Debug в Intellij IDEA: гайд для новичков - 13İki preakpoints var. burada:
  • Bee.java:24 - 24-cü sətirdə Bee sinfində
  • Main.java:14 - 14-cü sətirdə Əsas sinifdə
Qeyd etmək istərdim ki, layihəni klonladığınız zaman sizdə bu BreakPoints olmayacaq: onları özünüz təyin etməlisiniz! Java İstisna Breakpoints bölməsi də var . Çox faydalı bir şey. Bundan istifadə edərək, proqramın hər hansı bir istisna və ya müəyyən bir istisna atmazdan əvvəl dayanması üçün gizli kəsilmə nöqtəsi əlavə edə bilərsiniz. RuntimeException üçün gizli kəsilmə nöqtəsi əlavə edək. Bu asanlıqla edilir: yuxarı sol küncdə "+" artı işarəsi var. Bunun üzərinə klikləyin və seçin Java İstisnalar Breakpoints : Debug в Intellij IDEA: гайд для новичков - 14Görünən pəncərədə əlavə edilməli olan istisnanın adını yazın, təklif olunan siyahıdan seçin və OK düyməsini sıxın : Debug в Intellij IDEA: гайд для новичков - 15Bu təhsil proqramını bitirib təcrübəyə keçirik.

Gedək, debug vəhşiliyinə girək

Debug в Intellij IDEA: гайд для новичков - 16Mən irsi arıçı olduğum üçün sazlama təqdimatı üçün arıların nektar toplaması, nektarın bala emal edilməsi və pətəkdən bal əldə etməsi prosesini təsvir edən layihə yaratdım. Layihənin kökündə olan README faylının sənədlərinə əsaslanaraq oxuyuruq: gözlənilən davranış - nektarın toplandığı bütün çiçəklərdən ( ikiqat dəyər kimi) balın yarısına bərabər miqdarda bal toplanacaq. toplanmış nektar. Layihədə aşağıdakı siniflər var:
  • Arı - adi işçi arı;
  • BeeQueen - kraliça arı;
  • Arı pətəyi - arı pətəyi;
  • HoneyPlant - bal toplanan bal bitkisi;
  • Əsas - public static void main()layihənin başladığı metodun yerləşdiyi yer.
Metodunu işlətsəniz main(), məlum olur ki, balın miqdarı nəinki hesablanmır, hətta bir səhv də görünür... Debug в Intellij IDEA: гайд для новичков - 17Orada nəyin səhv olduğuna baxmaq lazımdır. Aşağı sağ küncdəki yığın izindən görə bilərik ki HoneyPlant.java:20, -də RuntimeException atılır: Debug в Intellij IDEA: гайд для новичков - 18Bu, bizim vəziyyətimizdir: RuntimeException var, yuxarıda təsvir olunduğu kimi, belə bir istisna üçün axtarış əlavə edək və main()metodu işə salaq. debug rejimi. Bunun üçün Intellij IDEA-da metoddan əvvəl yaşıl üçbucaq oxuna klikləyin main(): Debug в Intellij IDEA: гайд для новичков - 19və biz bu işarə ilə istisna işə düşməmişdən əvvəl dayandırılmış proqramı əldə edəcəyik.Tam Debug в Intellij IDEA: гайд для новичков - 20Debug в Intellij IDEA: гайд для новичков - 21məlumat əldə etmək üçün Debug bölməsinə baxmaq lazımdır. Tətbiqin bu hissəsində mövcud olan bütün dəyişənləri göstərən Dəyişənlərə malikdir :
  • nektar = 1,0;
  • nektar tutumu = -1.0.
İstisna ədalətli şəkildə atılır, çünki bal bitkisində olan nektar miqdarının dəyəri mənfi ola bilməz. Bəs bu niyə baş verir? Axı, bir yoxlama var ki, nektar bitərsə, 15-17-ci sətirlərdə sıfır dəyəri qaytarılır:
if ( nectar == 0 ) {
         return 0;
}
Amma diqqət çəkən məqam ondan ibarətdir ki, o, səhv dəyişəni yoxlayır... və bu kodda bir səhvdir. NectarCapacity dəyişənində olan çiçəkdəki nektarın dəyərini yoxlamaq əvəzinə , proqram metoda daxil olan və nektardan almaq istədikləri miqdar olan nektarın dəyərini yoxlayır. Budur, ilk səhv! Buna görə də onu düzgün qoyub ifadəni alırıq:
if ( nectarCapacity == 0) {
         return 0;
}
main()Sonra, metodu normal rejimdə işlədirik (Run `Main.main()`)və daha səhv yoxdur, proqram işlədi: Tətbiq Debug в Intellij IDEA: гайд для новичков - 22işlədi və cavab verdi: "33.0 bal 2 bal bitkisindən 7 arı tərəfindən istehsal edildi" Hər şey yaxşı olardı, amma cavab səhv... Hamısı ona görə ki, sənədlərin README faylında nektarın 2 ilə 1 nisbətində bala çevrildiyi yazılıb:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Əsas üsuldan görünür ki, iki bal bitkisi var, müvafiq olaraq 30 və 40 vahid nektar, buna görə də sonda 35 vahid bal almalısınız. Və yazır ki, 33. Digər iki vahid hara getdi?... İndi öyrənəcəyik! Main.main()Bunun üçün metodun yerinə yetirildiyi 28-ci sətirdə kəsilmə nöqtəsi qoymalı beeHive.populateHoney()mainmetodu Debug rejimində işlətməliyik: Debug в Intellij IDEA: гайд для новичков - 23Gəlin bu nöqtəyə daha yaxından nəzər salaq. Proqram 28-ci sətri icra etməzdən əvvəl dayandı. Aşağıda biz işləyən proqramdakı bütün məlumatları təsvir edən Debug bölməsini görürük. Dəyişənlər hissəsi, artıq qeyd edildiyi kimi, tətbiqin bu hissəsindən əldə edilə bilən bütün dəyişənləri və obyektləri ehtiva edir. Çərçivələr hissəsi tətbiqin keçdiyi addımları göstərir, siz əvvəlki addıma baxa və bütün yerli məlumatları əldə edə bilərsiniz. Proqramın işləməyə davam etməsi üçün aşağıda göstərildiyi kimi F9Debug в Intellij IDEA: гайд для новичков - 24 düyməsini və ya yaşıl işarəni sıxa bilərsiniz: Proqramı dayandırmaq üçün qırmızı kvadrat üzərinə klikləmək lazımdır: Debug в Intellij IDEA: гайд для новичков - 25Proqramı sazlama rejimində yenidən işə salmaq üçün oxun üzərinə basmaq lazımdır: Debug в Intellij IDEA: гайд для новичков - 26Sonra, proqramda addım-addım getmək üçün iki düymədən istifadə edə bilərsiniz:
  • F8 - kodun bir bölməsindən keçin və daxili üsullara girməyin;
  • F7 - kod bölməsindən keçin və daxili metodları daxil edin.
Buna görə də, metodu işə salmaq üçün beeHive.populateHoney()F7 düyməsini sıxmalıyıq və davam edəcəyik: Sonra, bu metoddan istifadə edərək F8- dən istifadə edərək, debug rejimindən sona qədər Debug в Intellij IDEA: гайд для новичков - 27keçirik və bu üsulda nə baş verdiyini təsvir edirik:
  • Line 25 - Stream API bütün arılardan bal toplamaq üçün istifadə olunur;
  • 26-cı sıra - bal mövcud olana əlavə edilir;
  • 27-ci sıra - kraliça üçün 2 ədəd bal ayrılır;
  • 28-ci sıra - bu iki vahid balın ümumi miqdarından çıxarılır;
  • 29-cu sətir - uşaqlıq bu balı yeyir.
Bu iki bölmənin getdiyi yer, hurray! Biznes analitiki ilə əlaqə saxladıqdan sonra belə bir nəticəyə gəlirik ki, sənədləşmə README faylında xəta var və onu yeniləmək lazımdır. README faylını yeniləyək:
## 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.
Və budur: aşkar edilmiş bütün səhvlər düzəldildi, biz sakit şəkildə qəhvə içməyə və JavaRush hub -da məqalələri oxumağa davam edə bilərik :)

Ümumiləşdirin

Bu yazıda anladıq ki:
  • səhvsiz iş yoxdur və ayıklama onları həll etmək üçün əla bir yoldur;
  • kəsilmə nöqtəsi nədir və onun hansı növləri mövcuddur;
  • istisna kəsilmə nöqtəsini necə konfiqurasiya etmək olar;
  • Sazlama rejimində necə hərəkət etmək olar.

Oxumaq üçün məqalə

Digər məqalələrimə də baxın:
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION