PracticU

Debugger

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב › Debugger
מילון מושגים:
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.

Debugger
הסרטון מציג את הדיבאגר של Visual Studio: עצירה בנקודת עצירה, הרצה שורה אחר שורה, צפייה במשתנים ושינוי ערכים בזמן הריצה.
השלבים העיקריים
1. נקודת עצירה: לוחצים על שורה ומסמנים אותה ב-F9. הרצה עם F5 עוצרת בנקודה ונכנסת למצב דיבאג, ושורה צהובה מסמנת את הפקודה הבאה שתתבצע.
2. הרצה שורה אחר שורה: F10 (step over) מבצע את השורה הבאה בלי להיכנס לפונקציה. F11 (step into) נכנס לתוך פונקציה. Shift+F11 (step out) יוצא מהפונקציה הנוכחית.
3. צפייה בערך: Shift+F9 על משתנה פותח Quick Watch. להוספה לחלונית קבועה משתמשים ב-Add Watch. אפשר גם לכתוב ביטוי שלם, כמו i < b, ולראות אם הוא true או false.
4. Locals ו-Immediate: חלונית Locals מציגה אוטומטית את המשתנים של הפונקציה הנוכחית. חלונית Immediate מאפשרת לשנות ערך, למשל להכניס i = 8, ולבדוק ערך עם ?i.
כלים נוספים
- System.Diagnostics.Trace.WriteLine כותב הודעות לחלונית Output בלי שהמשתמש יראה אותן. ההודעה מופיעה רק במצב דיבאג.
- Trace.Assert עוצר את התוכנית ומכניס למצב דיבאג כשהתנאי שגוי. בהודעה שמופיעה יש שלוש אפשרויות: abort, ignore ו-retry. הבחירה ב-retry מכניסה לדיבאג בנקודה הזאת.
- Ctrl+F5 מריץ בלי דיבאגר ומתעלם מנקודות העצירה, ואילו F5 עוצר בנקודות העצירה.
- Ctrl+Shift+F9 מוחק את כל נקודות העצירה, ו-Shift+F5 יוצא ממצב הדיבאג.
שימו לב
הדיבאגר שימושי כשיש התנהגות לא צפויה בתוכנית. בעזרתו רואים איפה הערך נסטה ממה שציפינו, ואפשר לתקן את השגיאה במקום הנכון.
השיעור הבא בקורס: לולאה בתוך לולאה - Nested Loop

פרקי ההרצאה: Debugger

  1. 00:00

    מהו הדיבאגר ולמה הוא חשוב

  2. 00:54

    תוכנית דוגמה לסכום בלולאה

  3. 01:56

    נקודת עצירה (Breakpoint) והרצה

  4. 03:09

    Watch ו-Quick Watch לבדיקת משתנים

  5. 04:01

    מעקב אחר לולאה בעזרת ביטוי

  6. 05:15

    כניסה לפונקציה: F10 מול F11

  7. 08:24

    חלונות Locals ו-Immediate

  8. 09:56

    מחיקת כל נקודות העצירה

תמלול ההרצאה: Debugger

הטקסט המלא של הדקות הראשונות בהרצאה «Debugger» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:00

    אנחנו מגיעים לנושא מאוד מאוד חשוב וזה נושא הדיבאגר. הדיבאגר זהו מנגנון שמאפשר לכם בתור מתכנתים להריץ את התוכנית שכתבתם שורה אחר שורה, לצפות בערכים שנמצאים בתוך משתנים, לראות לאן המחשב קופץ, לבצע חישובים של ערכים תוך כדי ריצת התוכנית.

  2. 00:21

    והנושא הזה הוא מאוד חשוב בפיתוח תוכנה מפני שכאשר אנחנו כותבים קוד יכול להיות מצב שיש לנו שגיאות. יכול להיות שאנחנו חושבים שהתוכנית צריכה לתת לנו ערך מסוים והיא נותנת לנו ערך אחר בעצם יכול להיות שאנחנו לא מבינים למה יש לנו איזושהי שגיאה למה התוכנית קורסת שהיא לא אמורה לקרוס מנגנון הדיבאגר מאפשר לנו

  3. 00:42

    להריץ את התוכנית שורה שורה כאילו שהמחשב מריץ את זה בצורה איטית ואז אנחנו יכולים לראות אם מה שבאמת אנחנו חושבים שאמור להיות במשתנים או בפקודות אכן מתבצע אז בואו נראה איך אנחנו מפעילים את מנגנון הדיבאגר וכל מיני קיצורים בנוגע למנגנון הדיבאגר.

  4. 01:02

    אז בואו נכתוב איזושהי תוכנית מאוד פשוטה, ניקח איזשהו משתנה int a, נכניס בתוכו 3, int b, נכניס בתוכו 7, נפתח איזושהי לולאה שרצה מ-a עד ל-b, ניקח פה איזשהו משתנה שיחזיק את הסכום, ונחשב את הסכום ולבסוף נציג אותו.

  5. 01:48

    עכשיו בואו נסתכל על כמה דברים שקיימים בדיבאגר. דבר ראשון, אנחנו יכולים להגדיר משהו שנקרא breakpoint, נקודת עצירה.

  6. 01:57

    כאשר אנחנו לוחצים כאן, אנחנו רואים שיש לנו בעצם אדום כזה. כאשר אנחנו נריץ את התוכנית על ידי F5, התוכנית מיד תעצור בנקודת העצירה ותיכנס למצב דיבאג.

  7. 02:10

    הקיצור מקלדת זה F9. אז בואו נריץ את התוכנית על ידי F5. תוכנית רצה, ברגע שהיא מגיעה לנקודת העצירה, היא נכנסת למצב דיבאג.

  8. 02:19

    במצב דיבאג אנחנו רואים שורה צהובה, השורה הזאת היא שורה שאומרת אני הולכת להריץ את השורה הבאה. אם אנחנו נסתכל על המשתנה i אנחנו נראה שערכו כרגע הוא 0, עדיין הוא לא קיבל את המשתנה של.

  9. 02:34

    עכשיו אנחנו יכולים להריץ את התוכנית שלנו שורה-שורה, f10 זה סטפ-אובר, זה בעצם לפקודה הבאה. הפקודה הבאה זה כמובן a קטן מ-b. עכשיו אנחנו יכולים להתחיל לבצע סדרת בדיקות.

  10. 02:48

    אם אנחנו מסמנים בעצם איזשהו משתנה, בואו נסמן את משתנה i ונלחץ על שיפט f9 אנחנו נקבל איזשהו חלון שנקרא Quick Watch ובחלון הזה אנחנו יכולים לראות את ערכו של המשתנה שסימנו.

  11. 03:12

    אנחנו יכולים ללחוץ על Add Watch ואז נפתח לנו פה חלונית Watch ואנחנו יכולים לראות בצורה קבועה את ערך המשתנה. אותו דבר אנחנו יכולים לבצע על ביטויים שלמים.

  12. 03:26

    לדוגמה אנחנו יכולים לסמן את כל הביטוי I יותר קטן מ-B. לגרור אותו לתוך החלון או ללחוץ לחילופין על Shift F9 ואז Add Watch ואז לראות בדיוק את הביטוי עצמו, אנחנו יכולים לראות פה ש-i קטן מ-b שווה ל-true.

  13. 03:45

    אוקיי, בואו ניקח גם את sum, נסמן אותו, נגרור אותו ונראה את sum. וכעת אנחנו יכולים להמשיך להריץ את התוכנית שורה-שורה על ידי f10, ולראות שיש לנו פה כניסה לתוך sum, ערכו 0 ועכשיו ערכו עולה ל-3.

  14. 04:04

    שימו לב ש-i הוא 3 ולכן sum פלוס שווה ל-i שווה 3, מה שבאדום זה בעצם המשתנה האחרון שהשתנה. בואו נמשיך להריץ, יש לנו פה true, יש לנו פה 7, ו-sum i קופץ ל-5, עדיין true, בואו נריץ, i ערכו 6, b, אני מזכיר לכם הוא 7, עדיין i קטן מ-b, הוא true,

  15. 04:38

    נכנסים, נמשיך להריץ, i קופץ ל-7, 7 קטן מ-7, false, אנחנו יוצאים החוצה ומציגים את התוצאה. כאשר אנחנו נלחץ עוד פעם f10, אנחנו נראה שכעת אנחנו יכולים ללכת לקונסול, להדליק אותו, ולראות בעצם את התמונה שקיימת בקונסול.

  16. 04:58

    ממשיכים להריץ את התוכנית, ובעצם התוכנית מסתיימת. אז זה בעצם חלון Watch ואפשרות להריץ את התוכנית שורה-שורה.

  17. 05:07

    בואו נניח שיש לנו את כל הסיפור הזה כתוב בתוך פונקציה. יש לנו פה Static, Void, Print Something, ואת כל הדבר הזה כתוב בתוך הפונקציה.

  18. 05:29

    מהמיין אנחנו קוראים ל-Print Something. אם אנחנו הולכים לשים פה breakpoint ולהריץ את התוכנית, אנחנו נעצור בשורה של Print Something, וכעת אנחנו רואים שהפונקציה עדיין לא התבצעה.

  19. 05:48

    אם אנחנו נריץ את זה עם F10, המערכת מבצעת את הפונקציה אבל לא נכנסת אליה, ואנחנו יכולים לראות כאן את התוצאה המוצגת כאשר ההצגה התבצעה בתוך הפונקציה. בואו נעצור את התוכנית שזה Shift + F5 ונריץ אותה עוד פעם ל-F5.

  20. 06:08

    דרך אגב אם אתם מריצים את התוכנית על ידי Control F5 אז התוכנית מתעלמת לחלוטין מברקפוינט ולא נכנסת לכם למצב דיבאגר.

  21. 06:17

    זה עוד אחד מההבדלים בין Control F5 לבין F5. F5 יעצור לכם בברקפוינט לא להיכנס למצב דיבאג. כאן אם אנחנו נמצאים בהרצה של פונקציה ואנחנו רוצים להיכנס לתוך הפונקציה יש לנו את הקיצור F11 step into. F11 נכנס לתוך פונקציה כאשר F10 דילג מעליה אבל כן ביצע אותה.

  22. 06:39

    אז בואו נמשיך להתקדם ונוכל לראות איך אנחנו יכולים להתקדם לפונקציה. יש לנו פה את הקיצור shift+F11 שיוצא מיידית מהפונקציה שבו הוא נמצא וכך התוכנית יכולה להמשיך.

  23. 06:50

    כאן אנחנו יכולים לראות שיצאנו מהפונקציה אבל היא כמובן התבצעה לגמרי. בואו נעצור. נעבור לדבר נוסף. אנחנו יכולים גם להגדיר מערך.

  24. 07:03

    בואו נגדיר אותו עם סוגריים מרובעים שווה ונכניס את הכל הערכים. כעת אם אנחנו רוצים בוא נניח לראות את המערך, נשים פה איזה for, נדפיס אותו, נשים פה breakpoint ונריץ את התוכנית עד הברקפוינט.

  25. 07:36

    אנחנו יכולים גם לראות את ערכי המערך עצמו. כאן אנחנו יכולים לפחות על הפלוס ולראות את הערכים עצמם או שאנחנו יכולים לגור את המערך לחלונית watch, לבטוח אותו ולראות את כל הערכים שיש בו.

  26. 07:55

    אז חלונית הדיבאגר מאפשרת לנו, חלונית הוואץ' ליתר דיוק, מאפשרת לנו לראות ערכים שנמצאים בתוך מערך ממש ערך ערך שלב שלב. איזה עוד חלונות קיימים?

  27. 08:08

    אז אנחנו יכולים לראות שיש לנו פה למעלה תפריט שנקרא דיבאג. תפריט שנקרא דיבאג יש לנו ווינדואו ופה אנחנו יכולים להדליק עוד סדרת חלונות נוספים.

  28. 08:18

    לדוגמה אנחנו יכולים להגדיר מספר חלונות וואץ', אם אנחנו רוצים לחלק משתנים. יש לנו אפשרות להשתמש בחלונית שנקראת Local. Locals מראה לנו אוטומטית את כל המשתנים הלוקאליים שיש בפונקציה הנוכחית שבה אנחנו נמצאים.

  29. 08:33

    בגלל שאנחנו במיין, יש לנו פה את Args, יש לנו פה את Array ויש לנו פה את I, ואנחנו אוטומטית רואים את כל המשתנים האלה בחלונית Locals. בואו נראה עוד חלונות שקיימים.

  30. 08:46

    דיבאג ווינדואו יש לנו פה חלונית שנקראת Immediate. Immediate מאפשרת לנו לראות ערכים בצורה מיידית או לשנות את ערכם. לדוגמה אנחנו יכולים לרשום i שווה 8, Enter.

  31. 09:05

    אוטומטית הכנסנו ב-i 8. שימו לב שבחלונית הזאת ב-Locals אנחנו רואים שערכו של i השתנה ל-8. כך אנחנו יכולים בעצם לבצע בדיקות ולהקפיץ ערכים, להקפיץ משתנים בעצם לערכים ספציפיים שאנחנו רוצים לראות בלי לחכות שהערך הזה יגיע.

  32. 09:32

    אם אנחנו רוצים לראות את ערכו של i בחלונית Immediate אנחנו גם יכולים על ידי זה שאנחנו שמים סימן שאלה i ואז אנחנו רואים שהוא כותב לנו שווה 8. אם אנחנו רוצים לנקות את החלונית מקש ימני clear all מנקה לנו את החלונית את הסרגל של הדיבאג אנחנו יכולים להדליק ולכבות על ידי זה שאנחנו לוחצים פה באזור הריק מקש ימני ואנחנו רואים פה אפשרות להדליק דיבאג או לכבות

  33. 10:00

    אותו בואו נדליק אותו ואם הוא לא קיים אצלכם בצורה כזאת אתם מוסיפים אותו כמובן שאפשר דרך תפריט דיבאג להגיע לכל אחד מהפריטים שיש בו בואו נעצור את התוכנית ונראה שיכול להיות מצב שיש לנו הרבה breakpoints ששמנו במהלך התוכנית ואנחנו רוצים בבת אחת להיפטר מכל הברקפוינטס.

  34. 10:22

    זה מתבצע על ידי דיבאג delete all breakpoints.

לקורס המלא: קורס C# למתחילים אונליין

ההרצאה הקודמת: פקודות break and continue

ההרצאה הבאה: לולאה בתוך לולאה - Nested Loop

הרצאות קשורות מקורסים אחרים

  • SQL Debugger
  • אנדרואיד Debugger

קורסים נוספים במסלול

  • קורס פיתוח משחקים יוניטי - Unity - שפת #C