דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. Debugging על ViewModel ב-WPF

Debugging על ViewModel ב-WPF

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 4 כותבים 599 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    השיב לMordechai 0 ב נערך לאחרונה על ידי pcinfogmach
    #3

    @Mordechai-0
    אתה יכול להרחיב קצת על מה האפשרות הזו עושה (ובפרט למה זה לא ה-default?)
    תודה

    גמ"ח מידע מחשבים ואופיס

    תגובה 1 תגובה אחרונה
    0
    • yossizY מחובר
      yossizY מחובר
      yossiz
      השיב לpcinfogmach ב נערך לאחרונה על ידי yossiz
      #4

      @pcinfogmach יש כמה מצבי exception שיכולים לקרות תוך כדי דיבוג

      א) חריגה שנזרקה מתוך קוד שלך והולכת להיות מטופל בתוך קוד שאתה כתבת, כלומר, זה בתוך בלוק של try/catch שאתה כתבת
      ב) חריכה שנזרקה מתוך קוד שלך והולכת להיות מטופל, אבל לא על ידי קוד שלך (מי שקרא לפונקציה של הוסיף מסביב לקריאה try/catch)
      ג) חריגה שנזרקה מתוך קוד ספרייה - לא קוד שלך, והולכת להיות מטופלת על ידי קוד הספרייה
      ד) חריגה שנזרקה מתוך קוד ספרייה - לא קוד שלך, והולכת להיות מטופלת על ידי קוד שלך - אין בלוק try/catch של הספרייה אבל אתה עטפת את הקריאה עם try/catch
      ה) חריגה שלא מטופלת כלל

      הכללים מתי VS עוצר את הדיבאגר בעת זריקת חריגה תלויה בכמה הגדרות
      רמה ה) תמיד גורם לדביאגר לעצור
      השאר תלויים בהגדרות

      במקרה שלך מדובר החריגה שנזקרה מתוך הקוד שלך וטופלה על ידי ספריית XamlLoader של הפריימוורק (כמו שאתה רואה בתמונה, כאשר נטענת קובץ xaml זה קורה בתוך בלוק של try/catch)

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

      אחרי הקדמה זו תקרא את תיעוד ההגדרות
      https://learn.microsoft.com/en-us/visualstudio/debugger/managing-exceptions-with-the-debugger?view=vs-2022
      ותבדוק אם אתה מצליח להבין למה זה קרה
      שים לב שאפשר להגדיר כל תת-טייפ של exception עם הגדרה שונה, ויש גם הגדרות כלליות כמו מה ש @Mordechai-0 הביא - Just My Code

      בינתיים לא התעמקתי בתיעוד בצורה מספקת להבין בדיוק הכללים

      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

      תגובה 1 תגובה אחרונה
      6
      • yossizY מחובר
        yossizY מחובר
        yossiz
        כתב ב נערך לאחרונה על ידי yossiz
        #5

        אגב, אני לא מפתח WPF אבל יצרתי פרוייקט דמו כדי לבדוק את הנושא
        הוספתי לפרוייקט שלי UserControl ובתוך הconstructor זרקתי שגיאה
        אצלי הדיבאגר עוצר בתוך הקוד שלי בשורה שאני זורק את השגיאה (ב-catch ולא בזריקה הראשונה בתוך ה-try)
        אני לא יודע מה שונה אצלך, אם זה שינוי של הגדרות, או קלאס שונה של exception

        שים לב בתמונה גם לכותרת הודעת השגיאה (User-Unhandled) וגם להגדרות וקישור להגדרות נוספות
        image.png

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

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        pcinfogmachP תגובה 1 תגובה אחרונה
        3
        • pcinfogmachP מנותק
          pcinfogmachP מנותק
          pcinfogmach
          השיב לyossiz ב נערך לאחרונה על ידי pcinfogmach
          #6

          @yossiz כתב בDebugging על ViewModel ב-WPF:

          אגב, אני לא מפתח WPF אבל יצרתי פרוייקט דמו כדי לבדוק את הנושא
          הוספתי לפרוייקט שלי UserControl ובתוך הconstructor זרקתי שגיאה

          אכן במקרה כזה אין לי בעיות הבעיות מתחילות כאשר אני משתמש במבנה MVVM ויש בעיה במודל או ב-ViewModel (שם עיקר הכוח של wpf בא לידי ביטוי). נכון אפשר להסתכל על פרטי השגיאה אבל זה די מתסכל לא להגיע ישר לבעיה ולתקן כמו שאני רגיל.
          מה שכתבת בהחלט עזר לי להבין יותר. התיעוד בכל הנושא הזה מאוד לא ברור לי. ובפרט מה בדיוק עושה מה ש@Mordechai-0 אמר Enable Just my code. הנסיון שלי הוא ש-visual studio הוא תוכנה מורכבת וכשמתחילים לשנות את ההגדרות אם לא באמת מבינים מה עושים אזי עדיף לא לשנות.

          גמ"ח מידע מחשבים ואופיס

          קומפיונטק yossizY 2 תגובות תגובה אחרונה
          0
          • קומפיונטק מנותק
            קומפיונטק מנותק
            קומפיונט
            השיב לpcinfogmach ב נערך לאחרונה על ידי קומפיונט
            #7

            @pcinfogmach כתב בDebugging על ViewModel ב-WPF:

            ובפרט מה בדיוק עושה מה ש@Mordechai-0 אמר Enable Just my code

            האופציה הזאת מאפשרת לדבג קוד חיצוני שאינו חלק מהפרוייקט שלך, לצורך הדוגמא: אם הכנסת break point באיזשהו מקום בקוד ואתה מתקדם שורה שורה עם F10 או F11, אז אם Enable Just my code מופעל F11 לא יכנס לפונציות שהם לא בקוד שלך, אם הוא מבוטל זה יכנס גם לקוד שהוא ממקור חיצוני באמצעות דה-קומפלציה (או source link).

            בקשר ל-default, זכור לי שזה השתנה בין הגרסאות של visual studio.

            תגובה 1 תגובה אחרונה
            4
            • pcinfogmachP מנותק
              pcinfogmachP מנותק
              pcinfogmach
              השיב לMordechai 0 ב נערך לאחרונה על ידי
              #8

              @Mordechai-0
              שוב נתקלתי בבעיה זו והעצה שלך לא עזרה...
              😞

              גמ"ח מידע מחשבים ואופיס

              קומפיונטק תגובה 1 תגובה אחרונה
              0
              • קומפיונטק מנותק
                קומפיונטק מנותק
                קומפיונט
                השיב לpcinfogmach ב נערך לאחרונה על ידי
                #9

                @pcinfogmach כתב בDebugging על ViewModel ב-WPF:

                שוב נתקלתי בבעיה זו והעצה שלך לא עזרה...

                תנסה לעקוב בחלונית ה - call stack אחרי המקום בקוד שלך שבו החריג נזרק.

                pcinfogmachP תגובה 1 תגובה אחרונה
                0
                • pcinfogmachP מנותק
                  pcinfogmachP מנותק
                  pcinfogmach
                  השיב לקומפיונט ב נערך לאחרונה על ידי pcinfogmach
                  #10

                  @קומפיונט
                  תודה
                  אני מודע לזה שאפשר לזהות את הבעיה ככה
                  זה מתסכל אותי אבל שאני לא יכול לדבג בצורה ישירה כמו בקוד רגיל של C#

                  גמ"ח מידע מחשבים ואופיס

                  תגובה 1 תגובה אחרונה
                  0
                  • yossizY מחובר
                    yossizY מחובר
                    yossiz
                    השיב לpcinfogmach ב נערך לאחרונה על ידי yossiz
                    #11

                    @pcinfogmach כתב בDebugging על ViewModel ב-WPF:

                    הבעיות מתחילות כאשר אני משתמש במבנה MVVM ויש בעיה במודל או ב-ViewModel

                    ניסיתי גם ככה, ולא הצלחתי לשכפל את הבעיה שלך...
                    הוספתי ל-vscode תוסף template studio ויצרתי פרוייקט עם מבנה MVVM וכל שאר ה-goodies שהם מציעים

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

                    מה שונה אצלך?

                    5abd194d-83f7-428b-9a35-51e74335f79f-CleanShot 2024-12-17 at 22.15.51@2x.png

                    יצויין שכל ההגדרות אצלי הם בררות מחדל

                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                    קומפיונטק תגובה 1 תגובה אחרונה
                    1
                    • קומפיונטק מנותק
                      קומפיונטק מנותק
                      קומפיונט
                      השיב לyossiz ב נערך לאחרונה על ידי קומפיונט
                      #12

                      @yossiz גם אני נתקל בבעיות האלו, ולפעמים אפילו התוכנה נסגרת מבלי לציין שום exception, קשה לשחזר את זה כי זה קורה רק בפרויקטים גדולים עם קוד אסינכרוני, לדוגמא יש לי Task.Run שבתוכו יש try/catch שהוא נקרא ממתודה אסינכרונית אחרת שגם היא עוטפת אותו ב - try/catch, ואז עם כל הבלגן הזה פתאום נופלת לך שגיאה במקום לא ברור. בפרויקטים קטנים זה פשוט לא קורה.

                      לפעמים אפילו vs מציב לי את השגיאה בפונקציה שמריצה את ה thread הראשי באתחול האפליקציה.

                      תגובה 1 תגובה אחרונה
                      4

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום