JavaRush /Java блогы /Random-KK /IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу
Viacheslav
Деңгей

IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу

Топта жарияланған
Кодты жазу - шайқастың жартысы. Ол әлі де дұрыс жұмыс істеуі үшін жасалуы керек. IDE және отладка құралдары бұл мәселеде бізге көп көмектеседі.
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 1
Мысал ретінде IntelliJ IDEA пайдалана отырып, ол іске қосылған кезде codeымызға не болатынын білуге ​​болатындығымен танысуды ұсынамын. Debug - кең тақырып, сондықтан бұл шолу сүңгуір сияқты терең сүңгуді ұсынбайды. Бірақ мен сноркингке сенімдімін деп үміттенемін)

Кіріспе

Кодты жазудың бір бөлігі оны түзету болып табылады. Егер сіздің тапсырмаларыңыз codeты қолдауды қамтыса, одан да көп жөндеу болады. Сонымен қатар, отладка көмегімен сіз пайдаланылған кітапханалар мен фреймворктардың жұмысын басқа біреудің codeының джунглиіне батыра алатындай тереңірек тексере аласыз. Біздің сүңгуіміз үшін бізге қажет: Алдымен, жүктелген мұрағатты Quick Start Source Code көмегімен ашыңыз. IntelliJ Idea іске қосыңыз және « Бар көздерден жаңа жобаны » жасаңыз. hibernate4 ішкі каталогындағы pom.xml файлын таңдаңыз . Импорттау кезінде « Maven жобаларын автоматты түрде импорттау » параметрін көрсетіңіз және басқа параметрлерді өзгеріссіз қалдырып, жобаны жасауды аяқтаңыз. Жоба импортталып жатқанда, жүктеп алынған WildFly қолданбасының serverін кейбір каталогқа ашыңыз. Біз serverді файл bin\standalone.bat(немесе *nix жүйелері үшін standalone.sh) арқылы іске қосамыз. (!) --debug параметрінен бастау маңызды Біз serverдің іске қосылуын күтеміз. Олар бізге оның басталғанын жазып, уақытын көрсетеді. Ол келесідей болады:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 2
Әрі қарай serverде таңдаған жобаны іске қосуымыз керек. Бұл процесс жобаның өзінде табуға болатын шағын құжаттамада сипатталған: \hibernate4\README.adoc Осы құжаттамада көрсетілгендей, біз hibernate4 каталогында пәрменді іске қосуымыз керек: mvn clean package wildfly:deploy Біз құрастыру сәтті аяқталды деген хабарды күтеміз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 3
Осыдан кейін server журналында біз жаңа жобаның қалай «орналастырылғанын» көре аламыз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 4
Осыдан кейін біз бетке өтіп , « Мүшені тіркеуhttp://localhost:8080/wildfly-hibernate4 » пішіні бар бетті көрсетуіміз керек . Сонымен, эксперименттерге дайындығымыз аяқталды және біз бастай аламыз)) Түсінікті болу үшін алда көп суреттер болады, сондықтан дайын болыңыз)

Қашықтан жөндеу

Сонымен, IDE қолданба serverінде codeтың орындалуын бақылайтындай етіп Debug режимін конфигурациялауымыз керек. IntelliJ Idea екі нұсқада келеді: тегін (қауымдастық) және ақылы (Ultimate). Соңғысы EAP түрінде ресми түрде сыналуы мүмкін. Ultimate нұсқасында бәрі қарапайым - қолданба serverін түзету режимінде IDE-ден тікелей іске қосуға болады. Бірақ қауымдастық нұсқасында бірнеше нәрсені қолмен орындау керек. Сондықтан, күрделірек істі қарастырайық, яғни. Қауымдастық нұсқасында орнату. Қауымдастық нұсқасында кейбір шектеулер бар. Атап айтқанда, сіз одан қолданба serverін іске қоса алмайсыз. Бірақ бір жерде бөлек жерде бізге қажет қолданбасы бар іске қосылған server болған кезде қашықтан жөндеуді (Remote Debug) орнатуға болады. Орнату сипаттамасын осы жерден қолданайық: IntelliJ Idea қауымдастық шығарылымында Wildfly қашықтан жөндеу (8787 порты үшін қашықтан іске қосу конфигурациясын орнату). Конфигурациядан кейін біз жаңа конфигурацияны Debug режимінде іске қосамыз:
IntelliJ IDEA және Debug: дайвинг емес, сноркинг - 5
Егер бәрі жақсы болса, біз төменде бұл туралы хабарламаны көреміз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 6

Түзету процесі

Жазбаны сақтау арқылы жөндеуді көрейік. Ол үшін алдымен зерттейтін жерді анықтауымыз керек. Терезеге қарағанда, бізге «Тіркеу» түймесі қажет. Оны codeтан табайық. Сонымен, бізге элемент қажет, оның мәтіні болуы керек: «Тіркеу». Немесе оның бұған қатысы болуы керек. Тырнақшалардың ішінен Тіркеу түймесін басып Ctrl+Shift+F, іздеңіз. index.xhtml сайтында біреуі бар екенін көреміз.
IntelliJ IDEA және Debug: дайвинг емес, су астында жүзу - 7
Табылған көзге өту үшін Enter пернесін басыңыз:
IntelliJ IDEA және Debug: сүңгуір емес, су астында жүзу - 8
Сонымен, біз тіркеу кезінде memberController.register шақырылатынын көреміз.Шамасы , бұл java класының бір түрі болуы керек. Басыңыз Ctrl+Nжәне іздеңіз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 9
Шынында да, мұндай сынып бар. Оған кірейік. Шамасы, тіркеу әдісі болуы керек. Тіркеу әдісін басып Ctrl+F12, іздеңіз
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 10
Шынымен де таптық. Шамасы, тіркеу осы жерде, memberRegistration.register ішінде орын алады . Ctrl пернесін басыңыз және оған «түсу» әдісін басыңыз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 11
Енді «үзіліс нүктесін» немесе үзіліс нүктесін орнатайық. Бұл codeты орындау қай жерде кідірту керектігін көрсететін маркер. Осы сәтте біз көптеген қызықты нәрселерді үйренуге мүмкіндік аламыз. Оны қою үшін жол нөмірінің оң жағындағы орынды басу керек.
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 12
http://localhost:8080/wildfly-hibernate4 бетінде өрістерді толтырып, Тіркеу түймесін басыңыз. Панельдегі идея белгішесі жыпылықтайды:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 13
Idea бөліміне өтсеңіз, жөндеу панелінде көптеген қызықты ақпарат бар екенін көре аласыз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 14
Мұнда сіз нысан өрістерінің мәнін көре аласыз. Мысалы, тіркелген мүше неден тұрады:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 15
Тамаша. Тағы не істей аламыз? Біз мәтінмәндік мәзірді ашып, сол жерде Өрнекті бағалауды таңдай аламыз (немесе Іске қосу -> Өрнекті бағалау мәзірі арқылы). Жақсырақ, отладчиктің басқару тақтасында:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 16
Бұл тоқтау нүктесіндегі өте керемет мүмкіндік, ол code нүктесі қол жеткізе алатын барлық нәрсеге қол жеткізе алады, сол нүктеде орындалуы мүмкін кез келген codeты орындауға мүмкіндік береді. Мысалы:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 17
Сондай-ақ отладчиктің басқару тақтасында бағдарлама ағынын басқару элементін жылжытқыңыз келетін жерге жауап беретін басқару түймелері бар. Бұл сиқыр емес пе?) F8 (Step Out) түймесін басу арқылы біз әдістерді енгізбей codeты аралаймыз. F9 пернесін басу арқылы біз отладчикпен code жолдары арқылы жүруді тоқтатамыз және отладчикке бағдарламаның орындалуын бақылауды береміз. Егер біз F7 (Step Into) пернесін бассақ, жол бойында кездесетін әрбір әдісті енгізе отырып, code арқылы өтеміз. Айтпақшы, осы ақпараттық блокқа ерекше назар аударыңыз:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 18
Бұл біз тұрған ағынды және ағымдағы ағынның стекіндегі әдістерді көрсетеді. Бірақ бұл бәрі емес. Ыңғайлы болу үшін кадрлар қойындысын ашуға болады. Мұны істеу үшін оны қосу керек:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 19
Енді фреймдер қойындысында әдістен әдіске көшу туралы ақпаратты көреміз, өйткені Step Into арқылы code арқылы жүре бастады.
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 20
Көріп отырғанымыздай, біз әрқашан бағдарлама орындалып жатқан жерге көшіре алмаймыз. Біз қазір "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)" орнындамыз. Бірақ іс жүзінде біз жүзеге асырудамыз. Бұл көрсетілген сыныппен дәлелденеді:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 21
Осыны қарастырайық. Біз білетіндей, ол ағымдағы нысанды көрсетеді. Біз TransactionScopedEntityManager қызметіндеміз. Неліктен Idea бізге codeты көрсете алмайды? IntelliJ Idea қазіргі уақытта ешқандай TransactionScopedEntityManager туралы білмейді, себебі ол біздің жобаға қосылмаған (ол жобаның тәуелділіктерінде емес). Бағдарлама serverі жұмыс істеп тұрғанда, оның ішінде жұмыс істейтін көптеген, көптеген әртүрлі кітапханалар бар. Бірақ біз олар туралы өте аз білеміз, өйткені... Жалпы, бізге ішкі дүниелерді зерттеудің қажеті жоқ, бізге тек жұмыс істеу керек. Бірақ кейде жұмыс немесе спорттық қызығушылық мұны талап етеді. Содан кейін сынып codeын қайдан алуға болатынын білу үшін Ide-ге осы кітапхана туралы хабарлау керек.

Түзету үшін үшінші тарап кітапханаларын қосу

Біріншіден, біз оның қандай кітапханаға қосылу керектігін түсінуіміз керек. Бірінші әдіс ең қиын - Интернетте іздеу. Нәтижені табу жылдамдығы мен нәтижесі жобаның қаншалықты дұрыс басқарылғанына байланысты. Мысалы, WildFly-де ашық репозиторий бар. Сондықтан біз Google «TransactionScopedEntityManager» қолданбасын пайдаланған кезде https://github.com/wildfly/wildfly/tree/master/jpa/subsystem сайтына өтіп , бізге wildfly-jpa қажет екенін анықтаймыз. Екінші әдіс дұрыс. Сервер қай жерде, сонда қараңыз. Бұған әртүрлі құралдар көмектесе алады. Мысалы, Windows жүйесінде ол Far Manager болуы мүмкін . Төменде іздеу алгоритмінің мысалы берілген. Оны орнатып, іске қосқаннан кейін , сол жақ қойындыны немесе оң жақ қойындыны пайдаланып қойындылардың біріне ауысу үшін Tab пернесін пайдаланыңыз және қатты дискідегі қажетті бөлімді таңдаңыз. Far Manager каталогының өзі орнатудан кейін Far Manager бағдарламасында ашық болуы әбден мүмкін. Дискінің түбіріне өту үшін түймесін басыңыз . Қолдану арқылы іздеу терезесін ашыңыз, каталогтың атын теруді бастаңыз және каталог табылғаннан кейін Enter пернесін басыңыз. Бұл іздеу ақылды және іздеу мәтініне сәйкес келетін каталогтарды бөлектейді. Қалталары жоқ таңбаларды енгізсеңіз, мұндай таңбаларды енгізу мүмкін емес. Осылайша біз қолданба serverінің каталогына өтеміз. Модульдердің serverде қай жерде орналасқанын білмейміз делік. Мүмкін сіз WildFly түрі туралы өміріңізде бірінші рет естіп отырған шығарсыз. Сондықтан файлдарды іздеу үшін бірден осы жерді басыңыз. Сонымен, логика айтады: бізге кітапханасы бар файл қажет. Яғни, бізге құмыра керек. Ішінде TransactionScopedEntityManager сыныбы болуы керек. Өйткені class = файл, содан кейін «құрамында» дегенді іздеңіз. Яғни, келесідей нәрсе: Alt+F1Alt+F2Ctrl + \Alt+FAlt+F7
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 22
Енді нәтижесін күтейік. Ол сені күтпейді)
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 23
Енді біз оның бастапқы codeын бір жерден табуымыз керек. Және 2 нұсқа бар: Мүмкін, екіншісін қолданайық. Онда тауып көрейік:
IntelliJ IDEA және Debug: сүңгу емес, су астында жүзу - 24
Енді тәуелділікті сипаттауға көшейік. Бұл бетте сіз бастапқы codeты жүктей аласыз. Керемет, қазір бізде code жүктелді. Кітапхананы қосу ғана қалады. Ол өте қарапайым қосылады. Біз жоба параметрлерін ашуымыз керек:
IntelliJ IDEA және Debug: дайвинг емес, су астында жүзу - 25
Онда біз «Кітапханаларды» таңдаймыз және алынған бастапқы codeтарды «Дереккөздер» бөліміне қосамыз, ал «Сыныптар» бөлімінде Far Manager көмегімен тапқан WildFly каталогындағы кітапхана jar файлының өзін көрсетеміз. Осыдан кейін, біз F7 арқылы шарлағанда, AbstractEntityManager және TransactionScopedEntityManager сыныбының мазмұнын көреміз, сонымен қатар Ctrl+N арқылы сынып бойынша іздеу арқылы қолжетімді боламыз.

Шарттары бар үзіліс нүктелері

Енді үзіліс нүктелеріне оралайық. Кейде біз әрқашан тоқтағымыз келмейді, бірақ белгілі бір жағдайда ғана. Енді не істеу керек? Мұнда біздің IDE де бізге көмектеседі. Үзіліс нүктесін қою арқылы біз оған шарт тағайындай аламыз. Мысалы, нүкте қойып, оны тінтуірдің оң жақ түймешігімен басыңыз:
IntelliJ IDEA и Debug : Не дайвинг, но снорклинг - 26
Енді тоқтау нүктесі аты Максимorан болғанда ғана іске қосылады. «Қосымша» түймесін басу арқылы үзіліс нүктелеріне арналған кеңейтілген параметрлер жиынтығы сізге қолжетімді болады.

Ерекшеліктердегі үзіліс нүктелері

Кейде біз қате алуымыз мүмкін және оның қайдан шыққанын қадағалағымыз келеді. Содан кейін біз тоқтау нүктесін codeтың белгілі бір жолына емес, ерекшелік шығарылатын жерге қоса аламыз. Ол үшін барлық тоқтау нүктелерінің тізімін кеңейту керек:
IntelliJ IDEA и Debug : Не дайвинг, но снорклинг - 27
Таңдалған ерекшелік түрі үшін жаңа ереже жасаңыз:
IntelliJ IDEA и Debug : Не дайвинг, но снорклинг - 28
Мысалы, NPE үшін:
IntelliJ IDEA и Debug : Не дайвинг, но снорклинг - 29

HotSwap сабақтары

Debugger - бұл таңқаларлық нәрсе. Түзетуден басқа, ол сыныптарды өзгертуге мүмкіндік береді! Иә, ресурстарды (мысалы, xhtml беттері) оңай өзгерту мүмкін емес. Бірақ java сыныптарының codeын жылдам ауыстыруға болады (бұл Hot Swap деп аталады). Бұл әрекетті орындау үшін, отладчик қосылған сыныпты өзгертіңіз және Run -> Өзгертілген сыныптарды қайта жүктеңіз. Осы тақырып бойынша пайдалы шолу: JVM жүйесінде codeты жылдам ауыстырудың 4 тегін жолы

Қорытынды

Түзеткіш - әзірлеушіге орындалатын codeтың тереңдігіне енуге және оны әрбір егжей-тегжейлі зерделеуге мүмкіндік беретін қуатты құрал. Бұл ең түсініксіз қателерді түзетуге мүмкіндік береді. Бұл сонымен қатар белгілі бір кітапханалардың қалай жұмыс істейтінін жақсы түсінуге мүмкіндік береді. Тіпті мұндай қысқаша шолу өте әсерлі болды, бірақ бұл пайдалы және қызықты болады деп үміттенемін. Егер кімде-кім осы материалға қызығушылық танытса, сіз келесі сілтемелер арқылы сүңгуді жалғастыра аласыз:
IntelliJ IDEA и Debug : Не дайвинг, но снорклинг - 30
#Вячеслав
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION