כתיבת קוד היא חצי מהקרב. עדיין צריך לגרום לזה לעבוד כמו שצריך. IDEs וכלי איתור באגים עוזרים לנו מאוד עם זה.
באמצעות IntelliJ IDEA כדוגמה, אני מציע להכיר כיצד נוכל לגלות מה קורה לקוד שלנו כשהוא פועל. ניפוי באגים הוא נושא רחב, ולכן סקירה זו אינה מציעה צלילה עמוקה, כמו צוללן. אבל אני מקווה שנורקלינג בוודאות)
לאחר מכן, עלינו להפעיל את הפרויקט שבחרנו בשרת. תהליך זה מתואר בתיעוד קטן שניתן למצוא בפרויקט עצמו:
לאחר מכן, ביומן השרת נוכל לראות כיצד "פרוס" הפרויקט החדש:
לאחר מכן, נעבור לדף
אם הכל בסדר, נראה הודעה על כך למטה:
הקש Enter כדי לעבור למקור שנמצא:
אז, אנו רואים שבהרשמה נקרא memberController.register . ככל הנראה, זה חייב להיות סוג של מחלקה Java. לחץ
אכן, יש שיעור כזה. בוא ניכנס לזה. ככל הנראה, צריכה להיות שיטת רישום. לחץ
אכן, מצאנו את זה. ככל הנראה, הרישום מתרחש כאן, ב- memberRegistration.register . הקש Ctrl ולחץ על השיטה כדי "ליפול" לתוכה:
בואו נגדיר כעת "נקודת שבירה" או נקודת שבירה. זהו סמן שאומר היכן ביצוע הקוד צריך להשהות. ברגע זה תהיה לנו הזדמנות ללמוד הרבה דברים מעניינים. כדי לשים את זה, אתה צריך ללחוץ במקום מימין למספר השורה.
בעמוד http://localhost:8080/wildfly-hibernate4 מלא את השדות ולחץ על כפתור הרשמה. סמל הרעיון בלוח יהבהב:
במעבר ל-Idea, אתה יכול לראות שיש הרבה מידע מעניין בפאנל ניפוי הבאגים:
כאן אתה יכול לראות את הערך של השדות של האובייקט. לדוגמה, ממה מורכב חבר רשום:
גדול. מה עוד אנחנו יכולים לעשות? נוכל לפתוח את תפריט ההקשר ולבחור בו Evaluate Expression (או דרך התפריט Run -> Evaluate Expression). טוב יותר, בלוח הבקרה של מאתר הבאגים:
זוהי יכולת סופר מגניבה בנקודת עצירה, בעלת גישה לכל מה שיש לנקודת הקוד גישה אליו, להפעיל כל קוד שניתן להפעיל באותה נקודה. לדוגמה:
ישנם גם כפתורי בקרה בלוח הבקרה של מאתר הבאגים שאחראים לאן ברצונך להעביר את בקרת זרימת התוכנית. זה לא קסם?) על ידי לחיצה על כפתור F8 (Step Out), אנו עוברים על הקוד מבלי להזין שיטות. על ידי לחיצה על F9, אנו מפסיקים לעבור בין שורות הקוד עם ה-debugger, ונותנים ל-debugger שליטה על ביצוע התוכנית. אם נלחץ על F7 (Step Into), אז נעבור על הקוד, ונכניס כל שיטה שניפגש בדרך. אגב, שימו לב במיוחד לבלוק המידע הזה:
זה מראה את השרשור שבו אנחנו נמצאים ואת השיטות על הערימה של השרשור הנוכחי. אבל זה לא הכל. מטעמי נוחות, ניתן לפתוח את לשונית המסגרות. כדי לעשות זאת זה חייב להיות מופעל:
כעת בכרטיסיית המסגרות אנו רואים מידע על המעבר משיטה לשיטה, כי התחיל לעבור על הקוד באמצעות Step Into.
כפי שאנו רואים, לא תמיד ניתן להעביר אותנו למקום שבו התוכנית מבוצעת כעת. אנחנו נמצאים כעת ב-"getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)". אבל למעשה, אנחנו ביישום. עדות לכך היא המחלקה שצוינה בכך:
בואו נסתכל על זה. כידוע, הוא מצביע על האובייקט הנוכחי. אנחנו ב-TransactionScopedEntityManager. מדוע אידיאה לא יכולה להראות לנו את הקוד? העובדה היא ש-IntelliJ Idea כרגע לא יודע על שום TransactionScopedEntityManager, מכיוון זה לא קשור לפרויקט שלנו (זה לא נמצא בתלות בפרויקט). כאשר שרת יישומים פועל, פועלות בתוכו הרבה מאוד ספריות שונות. אבל אנחנו יודעים עליהם מעט מאוד, כי... באופן כללי, אנחנו לא צריכים להתעמק בפנים, אנחנו רק צריכים שזה יעבוד. אבל לפעמים עבודה או עניין ספורטיבי דורשים זאת. לאחר מכן, עליך ליידע את Idea על הספרייה הזו כדי שהיא תדע היכן להשיג את קוד הכיתה.
עכשיו, בוא נחכה לתוצאה. הוא לא ישאיר אותך לחכות)
עכשיו, אנחנו צריכים למצוא את קוד המקור עבורו איפשהו. ויש 2 אפשרויות:
כעת נעבור לתיאור התלות. בעמוד זה תוכלו להוריד את קוד המקור. נהדר, עכשיו הורדנו את הקוד. כל מה שנותר הוא לחבר את הספרייה. זה מתחבר בצורה פשוטה ביותר. עלינו לפתוח את הגדרות הפרויקט:
שם אנו בוחרים "ספריות" ומוסיפים את קודי המקור שהתקבלו לקטע "מקורות", ובקטע "שיעורים" אנו מציינים את קובץ ה-Library jar עצמו מספריית WildFly, שמצאנו באמצעות Far Manager. לאחר מכן, כאשר אנו מנווט דרך F7, נראה את התוכן של מחלקות AbstractEntityManager ו-TransactionScopedEntityManager, וכן נהיה זמין באמצעות חיפוש לפי מחלקות באמצעות Ctrl+N.
כעת נקודת השבירה תידלק רק כאשר השם יהיה מקסימיליאן. על ידי לחיצה על הלחצן 'עוד', קבוצה מורחבת של הגדרות עבור נקודות שבירה תהיה זמינה עבורך.
וצור כלל חדש עבור סוג החריג שנבחר:
לדוגמה, עבור NPE:
#ויאצ'סלב
מבוא
חלק מכתיבת קוד הוא איתור באגים. ואם המשימות שלך כוללות תמיכה בקוד, יהיה אפילו יותר ניפוי באגים. ובכן, בנוסף, בעזרת איתור באגים, אתה יכול לבחון את עבודת הספריות והמסגרות המשמשות לעומק כפי שאתה יכול לשקוע בג'ונגל של קוד של מישהו אחר. לצלילה שלנו נצטרך:- סביבת פיתוח: מהדורת קהילה חינמית של IntelliJ Idea
- מותקן את מייבן
- WildFly Application Server 12.0.0.Final
- קוד מקור לדוגמאות רשמיות: קוד מקור להתחלה מהירה
bin\standalone.bat
\hibernate4\README.adoc
כפי שצוין בתיעוד זה, עלינו להפעיל את הפקודה בספריית hibernate4: mvn clean package wildfly:deploy
אנו ממתינים להודעה שהבנייה הושלמה בהצלחה:
http://localhost:8080/wildfly-hibernate4
ואנו אמורים להציג דף עם טופס " הרשמה לחבר ". אז, ההכנה שלנו לניסויים הושלמה ונוכל להתחיל)) יהיו הרבה תמונות קדימה בשביל הבהירות, אז תתכוננו)
ניפוי באגים מרחוק
לכן, עלינו להגדיר את מצב Debug כך שה-IDE שלנו ישלוט בביצוע הקוד בשרת היישומים. IntelliJ Idea מגיע בשתי גרסאות: בחינם (קהילה) ובתשלום (אולטימטיבי). את האחרון ניתן לנסות באופן רשמי בצורה של EAP. בגרסת Ultimate הכל פשוט - ניתן להפעיל את שרת היישומים ישירות מה-IDE במצב ניפוי באגים. אבל בגרסת הקהילה אתה צריך לעשות כמה דברים באופן ידני. לכן, הבה נבחן מקרה מסובך יותר, כלומר. הגדרה בגרסת הקהילה. לגרסת הקהילה יש כמה מגבלות. בפרט, אינך יכול להפעיל ממנו שרת יישומים. אבל אתה יכול להגדיר איתור באגים מרחוק (Remote Debug), כאשר איפשהו בנפרד יש שרת פועל עם האפליקציה שאנחנו צריכים. בואו נשתמש בתיאור ההגדרה מכאן: איתור באגים מרחוק Wildfly במהדורת הקהילה של IntelliJ Idea (הגדרת תצורת הפעלה מרחוק עבור יציאה 8787). לאחר הגדרת התצורה, אנו משיקים את התצורה החדשה שלנו במצב ניפוי באגים:תהליך ניפוי באגים
בוא נעשה ניפוי באגים בשמירת הרשומה. לשם כך, עלינו להחליט תחילה על המקום שבו נחקור. אם לשפוט לפי החלון, אנחנו צריכים כפתור "הרשמה". בוא נמצא את זה בקוד. אז, אנחנו צריכים אלמנט, זה צריך להיות הטקסט: "הירשם". או שיהיה לה משהו לעשות עם זה. לחץCtrl+Shift+F
וחפש הרשמה במרכאות. אנו רואים שיש אחד ב-index.xhtml.
Ctrl+N
וחפש:
Ctrl+F12
וחפש את שיטת הרישום
חיבור ספריות של צד שלישי לצורך איתור באגים
ראשית, אנחנו בעצמנו צריכים להבין איזו ספרייה היא שצריכה להיות מחוברת. הדרך הראשונה היא הקשה ביותר - חיפוש באינטרנט. המהירות והתוצאה של מציאת התוצאה תלויות מאוד במידת הניהול של הפרויקט. לדוגמה, ל- WildFly יש מאגר פתוח. אז כשאנחנו בגוגל את "TransactionScopedEntityManager" נלך אל https://github.com/wildfly/wildfly/tree/master/jpa/subsystem ונגלה שאנחנו צריכים wildfly-jpa. השיטה השנייה נכונה. איפה השרת נמצא, תסתכל שם. אמצעים שונים יכולים לעזור בכך. לדוגמה, ב-Windows זה יכול להיות Far Manager . להלן דוגמה לאלגוריתם חיפוש. לאחר התקנתו והשקתו, השתמשו ב-Tab כדי לעבור לאחת הכרטיסיות, באמצעותAlt+F1
הכרטיסייה השמאלית או Alt+F2
הימנית, ובחרו את המחיצה הדרושה לנו בכונן הקשיח. בהחלט ייתכן שספריית Far Manager עצמה פתוחה ב-Far Manager לאחר ההתקנה. כדי לעבור לשורש הדיסק, הקש Ctrl + \
. באמצעות, Alt+F
פתח את חלון החיפוש, התחל להקליד את שם הספרייה והקש Enter לאחר מציאת הספרייה. החיפוש הזה הוא חכם ומדגיש את המדריכים התואמים לטקסט החיפוש. אם תזין תווים שאין להם תיקיות, אז לא ניתן להזין תווים כאלה. בדרך זו אנו עוברים לספריית שרת היישומים. נניח שאיננו יודעים היכן ממוקמים המודולים בשרת. אולי זו הפעם הראשונה בחייך שאתה שומע על סוג של WildFly. לכן, לחץ מייד כאן Alt+F7
כדי לחפש קבצים. אז, ההיגיון מכתיב: אנחנו צריכים קובץ עם הספרייה. כלומר, אנחנו צריכים צנצנת. צריכה להיות מחלקה של TransactionScopedEntityManager בפנים. כי class = file, ואז חפש את "contains". כלומר, משהו כזה:
- סופר שימושי versioneye.com
- מאגר מייבן המרכזי
GO TO FULL VERSION