JavaRush /مدونة جافا /Random-AR /IntelliJ IDEA وDebug: ليس الغوص، بل الغطس
Viacheslav
مستوى

IntelliJ IDEA وDebug: ليس الغوص، بل الغطس

نشرت في المجموعة
كتابة التعليمات البرمجية هي نصف المعركة. لا يزال يتعين جعله يعمل بشكل صحيح. تساعدنا IDEs وأدوات تصحيح الأخطاء كثيرًا في ذلك.
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 1
باستخدام IntelliJ IDEA كمثال، أقترح التعرف على كيفية معرفة ما يحدث للكود الخاص بنا عند تشغيله. يعد تصحيح الأخطاء موضوعًا واسعًا، لذا فإن هذه المراجعة لا تقدم الغوص العميق، مثل الغواص. لكنني آمل الغطس بالتأكيد)

مقدمة

جزء من كتابة التعليمات البرمجية هو تصحيح الأخطاء. وإذا كانت مهامك تتضمن دعم التعليمات البرمجية، فسيكون هناك المزيد من التصحيح. حسنًا، بالإضافة إلى ذلك، بمساعدة تصحيح الأخطاء، يمكنك فحص عمل المكتبات والأطر المستخدمة بعمق كما يمكنك الانغماس في غابة التعليمات البرمجية الخاصة بشخص آخر. لغوصنا سنحتاج إلى: أولاً، قم بفك ضغط الأرشيف الذي تم تنزيله باستخدام رمز مصدر البدء السريع. قم بتشغيل IntelliJ Idea وأنشئ " مشروع جديد من المصادر الموجودة ". حدد ملف pom.xml في الدليل الفرعي hibernate4 . عند الاستيراد، حدد " استيراد مشاريع Maven تلقائيًا " وأكمل إنشاء المشروع، مع ترك الإعدادات الأخرى دون تغيير. أثناء استيراد المشروع، قم بفك ضغط خادم تطبيق WildFly الذي تم تنزيله في بعض الأدلة. نبدأ الخادم باستخدام الملف (أو standalone.sh لأنظمة *nix). (!) من المهم أن نبدأ بالمعلمة --debug ، وننتظر حتى يبدأ الخادم. سوف يكتبون لنا أن الأمر بدأ ويشيرون إلى الوقت. سيبدو شيئا من هذا القبيل: bin\standalone.bat
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 2
بعد ذلك، نحتاج إلى تشغيل المشروع الذي اخترناه على الخادم. تم وصف هذه العملية في وثائق صغيرة يمكن العثور عليها في المشروع نفسه: \hibernate4\README.adoc كما هو موضح في هذه الوثائق، نحتاج إلى تشغيل الأمر في دليل hibernate4: mvn clean package wildfly:deploy نحن في انتظار رسالة تفيد بأن البناء قد اكتمل بنجاح:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 3
بعد ذلك، في سجل الخادم يمكننا أن نرى كيف تم "نشر" المشروع الجديد:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 4
بعد ذلك ننتقل إلى الصفحة http://localhost:8080/wildfly-hibernate4وعلينا أن نعرض صفحة بها نموذج “ تسجيل الأعضاء ”. لقد اكتمل تحضيرنا للتجارب ويمكننا البدء)) سيكون هناك الكثير من الصور للتوضيح، لذا استعد)

التصحيح عن بعد

لذلك، نحن بحاجة إلى تكوين وضع التصحيح بحيث يتحكم IDE الخاص بنا في تنفيذ التعليمات البرمجية على خادم التطبيق. يأتي IntelliJ Idea في نسختين: مجاني (المجتمع) ومدفوع (Ultimate). يمكن تجربة الأخير رسميًا في شكل EAP. في الإصدار النهائي، كل شيء بسيط - يمكن تشغيل خادم التطبيق مباشرة من IDE في وضع التصحيح. ولكن في إصدار المجتمع، يتعين عليك القيام ببعض الأشياء يدويًا. لذلك، دعونا ننظر في حالة أكثر تعقيدا، أي. الإعداد في إصدار المجتمع. إصدار المجتمع لديه بعض القيود. وعلى وجه الخصوص، لا يمكنك تشغيل خادم التطبيقات منه. ولكن يمكنك إعداد تصحيح الأخطاء عن بعد (التصحيح عن بعد)، عندما يكون هناك خادم قيد التشغيل في مكان ما بشكل منفصل مع التطبيق الذي نحتاجه. دعنا نستخدم وصف الإعداد من هنا: تصحيح الأخطاء عن بعد Wildfly في إصدار مجتمع IntelliJ Idea (إعداد تكوين التشغيل عن بعد للمنفذ 8787). بعد التكوين، نطلق التكوين الجديد في وضع التصحيح:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 5
إذا كان كل شيء على ما يرام، فسنرى رسالة حول هذا أدناه:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 6

عملية التصحيح

دعونا نصحح أخطاء حفظ السجل. للقيام بذلك، يجب علينا أولا أن نقرر المكان الذي سنستكشفه. إذا حكمنا من خلال النافذة، نحتاج إلى زر "تسجيل". دعونا نجدها في الكود. لذلك، نحن بحاجة إلى عنصر، يجب أن يكون النص: "تسجيل". أو يجب أن يكون لها علاقة بالأمر. انقر 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
لنقم الآن بتعيين "نقطة الاستراحة" أو نقطة الاستراحة. هذه علامة توضح المكان الذي يجب أن يتوقف فيه تنفيذ التعليمات البرمجية. في هذه اللحظة سيكون لدينا الفرصة لتعلم الكثير من الأشياء المثيرة للاهتمام. لوضعها، تحتاج إلى النقر فوق المكان الموجود على يمين رقم السطر.
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
هذه قدرة رائعة جدًا عند نقطة التوقف، حيث تتمتع بإمكانية الوصول إلى كل ما يمكن لنقطة التعليمات البرمجية هذه الوصول إليه، لتنفيذ أي تعليمات برمجية يمكن تنفيذها في تلك المرحلة. على سبيل المثال:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 17
توجد أيضًا أزرار تحكم في لوحة تحكم مصحح الأخطاء تكون مسؤولة عن المكان الذي تريد نقل التحكم في تدفق البرنامج إليه. أليس هذا سحرًا؟) بالضغط على الزر F8 (الخروج)، نسير عبر الكود دون إدخال الطرق. بالضغط على F9، نتوقف عن السير عبر سطور التعليمات البرمجية مع مصحح الأخطاء، ونمنح مصحح الأخطاء التحكم في تنفيذ البرنامج. إذا ضغطنا على F7 (الدخول)، فسوف نمر عبر الرمز، وندخل كل طريقة نلتقي بها على طول الطريق. بالمناسبة، انتبه بشكل خاص إلى كتلة المعلومات هذه:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 18
يوضح هذا الخيط الذي نحن فيه والطرق الموجودة في مكدس الخيط الحالي. ولكن هذا ليس كل شيء. للراحة، يمكنك فتح علامة التبويب الإطارات. للقيام بذلك يجب تمكينه:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 19
الآن في علامة تبويب الإطارات نرى معلومات حول الانتقال من طريقة إلى أخرى، لأن بدأت في السير عبر الكود باستخدام Step Into.
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 20
كما نرى، لا يمكن دائمًا نقلنا إلى المكان الذي يتم فيه تنفيذ البرنامج حاليًا. نحن الآن في "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)". لكن في الحقيقة نحن في التنفيذ. ويدل على ذلك الفئة المحددة بهذا:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 21
دعونا ننظر إلى هذا. كما نعلم، فإنه يشير إلى الكائن الحالي. نحن في TransactionScopedEntityManager. لماذا لا تستطيع Idea أن تعرض لنا الرمز؟ الحقيقة هي أن IntelliJ Idea لا تعرف حاليًا أي شيء عن TransactionScopedEntityManager، لأنه إنه غير متصل بمشروعنا (ليس موجودًا في تبعيات المشروع). عندما يكون خادم التطبيقات قيد التشغيل، هناك العديد والعديد من المكتبات المختلفة التي تعمل بداخله. لكننا لا نعرف إلا القليل عنهم، لأننا... بشكل عام، لا نحتاج إلى الخوض في التفاصيل الداخلية، بل نحتاج فقط إلى أن تعمل. لكن في بعض الأحيان يتطلب العمل أو الاهتمام الرياضي ذلك. بعد ذلك، يتعين عليك إبلاغ Idea بهذه المكتبة حتى تعرف مكان الحصول على رمز الفصل الدراسي.

ربط مكتبات الطرف الثالث لتصحيح الأخطاء

أولاً، نحن أنفسنا بحاجة إلى فهم نوع المكتبة التي يجب توصيلها. الطريقة الأولى هي الأصعب - البحث على الإنترنت. تعتمد سرعة ونتائج العثور على نتيجة بشكل كبير على مدى جودة إدارة المشروع. على سبيل المثال، لدى WildFly مستودع مفتوح. لذلك عندما نبحث في Google عن "TransactionScopedEntityManager" سنذهب إلى https://github.com/wildfly/wildfly/tree/master/jpa/subsystem ونجد أننا بحاجة إلى Wildfly-jpa. الطريقة الثانية صحيحة حيث الخادم، انظر هناك. وسائل مختلفة يمكن أن تساعد في هذا. على سبيل المثال، في نظام التشغيل Windows يمكن أن يكون Far Manager . فيما يلي مثال لخوارزمية البحث. بعد تثبيته وتشغيله، استخدم علامة التبويب للتبديل إلى إحدى علامات التبويب، باستخدام Alt+F1علامة التبويب اليسرى أو Alt+F2اليمنى، وحدد القسم الذي نحتاجه على القرص الصلب. من الممكن أن يكون دليل Far Manager نفسه مفتوحًا في Far Manager بعد التثبيت. للانتقال إلى جذر القرص، اضغط على Ctrl + \. باستخدام، Alt+Fافتح نافذة البحث، وابدأ في كتابة اسم الدليل واضغط على Enter بعد العثور على الدليل. يعد هذا البحث ذكيًا ويسلط الضوء على تلك الأدلة التي تطابق نص البحث. إذا قمت بإدخال أحرف لا توجد مجلدات لها، فلا يمكن إدخال هذه الأحرف. بهذه الطريقة نذهب إلى دليل خادم التطبيق. لنفترض أننا لا نعرف مكان وجود الوحدات على الخادم. ربما تكون هذه هي المرة الأولى في حياتك التي تسمع فيها عن نوع ما من WildFly. لذلك، انقر هنا مباشرة Alt+F7للبحث عن الملفات. لذلك، يملي المنطق: نحن بحاجة إلى ملف مع المكتبة. أي أننا بحاجة إلى جرة. يجب أن يكون هناك فئة TransactionScopedEntityManager بالداخل. لأن class = file، ثم ابحث عن "يحتوي على". أي شيء من هذا القبيل:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 22
الآن، دعونا ننتظر النتيجة. لن يبقيك تنتظر)
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 23
الآن، نحن بحاجة إلى العثور على الكود المصدري له في مكان ما. وهناك خياران: دعونا نستخدم، ربما، الثاني. لنجد هناك:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 24
الآن دعنا ننتقل إلى وصف التبعية. في هذه الصفحة يمكنك تنزيل الكود المصدري. رائع، لقد قمنا الآن بتنزيل الكود. كل ما تبقى هو توصيل المكتبة. إنه يتصل بكل بساطة. نحن بحاجة لفتح إعدادات المشروع:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 25
هناك نختار "المكتبات" ونضيف أكواد المصدر المستلمة إلى قسم "المصادر"، وفي قسم "الفئات" نشير إلى ملف جرة المكتبة نفسه من دليل WildFly، والذي وجدناه باستخدام Far Manager. بعد ذلك، عندما نتنقل خلال F7، سنرى محتويات فئة AbstractEntityManager وTransactionScopedEntityManager، وستصبح متاحة أيضًا من خلال البحث حسب الفئة باستخدام Ctrl+N.

نقاط الاستراحة مع الشروط

دعنا نعود الآن إلى نقاط الاستراحة. في بعض الأحيان، لا نرغب دائمًا في التوقف، ولكن فقط في ظل ظروف معينة. ما يجب القيام به؟ وهنا سوف يساعدنا IDE أيضًا. من خلال وضع نقطة توقف، يمكننا تعيين شرط لها. على سبيل المثال، ضع نقطة وانقر عليها بزر الماوس الأيمن:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 26
الآن سيتم تفعيل نقطة الإيقاف فقط عندما يكون الاسم Maximilian. بالنقر فوق الزر "المزيد"، ستتوفر لك مجموعة موسعة من إعدادات نقاط التوقف.

نقاط الفصل على الاستثناءات

في بعض الأحيان قد نتلقى خطأ ونريد تتبع مصدره. بعد ذلك، يمكننا إضافة نقطة توقف ليس عند سطر معين من التعليمات البرمجية، ولكن في المكان الذي سيتم فيه طرح الاستثناء. للقيام بذلك، تحتاج إلى توسيع قائمة كافة نقاط التوقف:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 27
وقم بإنشاء قاعدة جديدة لنوع الاستثناء المحدد:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 28
على سبيل المثال، بالنسبة لـ NPE:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 29

فئات هوت سواب

المصحح شيء مذهل. بالإضافة إلى تصحيح الأخطاء، فهو يسمح لك بتغيير الفئات! نعم، لا يمكن تغيير الموارد (مثل صفحات xhtml، على سبيل المثال) بهذه السهولة. ولكن يمكن استبدال كود فئات Java بسرعة (وهذا ما يسمى Hot Swap). للقيام بذلك، ما عليك سوى تغيير الفئة مع مصحح الأخطاء المرفق وتنفيذ تشغيل -> إعادة تحميل الفئات التي تم تغييرها. مراجعة مفيدة حول هذا الموضوع: 4 طرق مجانية للتبديل السريع للكود على JVM

خاتمة

يعد مصحح الأخطاء أداة قوية تسمح للمطور بالتوغل في أعماق التعليمات البرمجية المنفذة ودراستها بكل تفاصيلها. هذا يسمح لك بتصحيح الأخطاء الأكثر إرباكًا. كما يسمح لك بفهم أفضل لكيفية عمل مكتبات معينة. حتى هذه المراجعة الموجزة كانت مثيرة للإعجاب للغاية، لكنني آمل أن تكون مفيدة ومثيرة للاهتمام. إذا كان أي شخص مهتمًا بهذه المادة، فيمكنه مواصلة الغوص باستخدام الروابط التالية:
IntelliJ IDEA وDebug: ليس الغوص، بل الغطس - 30
# فياتشيسلاف
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION