קביעת תצורה של נקודות עצירה מותנה ב- C#‎

הושלם

מאתר הבאגים של C# עבור Visual Studio Code תומך באפשרות לקבוע תצורה של נקודת עצירה שמפעילה רק אם תנאי מסוים תם. נקודת עצירה מסוג זה נקראת נקודת עצירה מותנית. ניתן לקבוע תצורה של נקודות עצירה מותנית ישירות או על-ידי עריכת נקודת עצירה קיימת.

הערה

Visual Studio Code תומך גם ב נקודת עצירה מותנית שמפעילה בהתבסס על מספר הפעמים שנקודות העצירה "נפגעו".

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

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

  1. החלף את תוכן Program.cs הקובץ בקוד הבא:

    int productCount = 2000;
    string[,] products = new string[productCount, 2];
    
    LoadProducts(products, productCount);
    
    for (int i = 0; i < productCount; i++)
    {
        string result;
        result = Process1(products, i);
    
        if (result != "obsolete")
        {
            result = Process2(products, i);
        }
    }
    
    bool pauseCode = true;
    while (pauseCode == true) ;
    

    קוד זה משתמש בפעולת שירות בשם LoadProducts לטעינת נתונים במערך products . לאחר שהנתונים נטענים, הקוד עובר את פעולות השירות של מערך וקריאות בשם Process1 ו- Process2.

  2. כדי להפיק נתונים עבור התהליכים המדומה, הוסף את השיטה הבאה לסוף הקובץ Program.cs הבא:

    static void LoadProducts(string[,] products, int productCount)
    {
        Random rand = new Random();
    
        for (int i = 0; i < productCount; i++)
        {
            int num1 = rand.Next(1, 10000) + 10000;
            int num2 = rand.Next(1, 101);
    
            string prodID = num1.ToString();
    
            if (num2 < 91)
            {
                products[i, 1] = "existing";
            }
            else if (num2 == 91)
            {
                products[i, 1] = "new";
                prodID = prodID + "-n";
            }
            else
            {
                products[i, 1] = "obsolete";
                prodID = prodID + "-0";
            }
    
            products[i, 0] = prodID;
        }
    }
    

    פעולת LoadProducts השירות יוצרת 2,000 זהות existingמוצר אקראיים ומקצה ערך של , newobsolete או לשדה תיאור מוצר. קיים סיכוי של 1% כי המוצרים מסומנים new.

  3. כדי לדמות עיבוד נתונים, הוסף את השיטות הבאות לסוף הקובץ Program.cs הבא:

    static string Process1(string[,] products, int item)
    {
        Console.WriteLine($"Process1 message - working on {products[item, 1]} product");
    
        return products[item, 1];
    }
    
    static string Process2(string[,] products, int item)
    {
        Console.WriteLine($"Process2 message - working on product ID #: {products[item, 0]}");
        if (products[item, 1] == "new")
            Process3(products, item);
    
        return "continue";
    }
    
    static void Process3(string[,] products, int item)
    {
        Console.WriteLine($"Process3 message - processing product information for 'new' product");
    }
    

    פעולות Process1 השירות ו Process2 - מציגות הודעות התקדמות ומחזירות מחרוזת.

    שים לב שהשיטה Process2 קוראת Process3 אם המוצר הוא new.

  4. בתפריט קוד Visual Studio קובץ, בחר שמור.

  5. בסמוך לחלק העליון Program.cs, הגדר נקודת עצירה בשורת הקוד הבאה:

    result = Process1(products, i);
    
  6. פתח את התצוגה הפעלה ו איתור באגים ולאחר מכן בחר התחל איתור באגים.

  7. השתמש ב- Step Into כדי לעבור על הקוד עבור ו- Process1Process2.

    שים לב לעדכונים של המקטעים VARIABLES ו- CALL STACK בתצוגה RUN AND DEBUG.

  8. המשך להשתמש ב - Step Into כדי לעבור על הקוד עד שתראה ערך i זה שווה ל- 3.

    המקטע VARIABLES בתצוגה RUN AND DEBUG מציג את הערך שהוקצה ל- i.

    שים לב שהצג Process1Process2 הודעות בלוח של מסוף איתור הבאגים. יישום אמיתי עשוי לדרוש אינטראקציות של המשתמשים בעת עיבוד הנתונים. אינטראקציות מסוימות עשויות להיות תלויות בנתונים המעובדים.

  9. השתמש בלחצן עצור כדי להפסיק את ביצוע הקוד.

קביעת תצורה של נקודת עצירה מותנית באמצעות ביטוי

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

  1. לחץ באמצעות לחצן העכבר הימני על נקודת עצירה קיימת ולאחר מכן בחר ערוך נקודת עצירה.

  2. הזן את הביטוי הבא:

    products[i,1] == "new";
    
  3. שים לב שהביטוי אינו מוצג עוד לאחר הקשה על Enter.

  4. כדי להציג את הביטוי באופן זמני, רחף עם מצביע העכבר מעל נקודת הפיצול (נקודה אדומה).

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

  6. המתן עד שהיישום ישהה בנקודות העצירה המותנה.

  7. שים לב לערך i המוצג תחת המקטע VARIABLES.

  8. בסרגל הכלים של פקדי איתור באגים , בחר המשך

  9. שים לב כי הערך של i עודכן במקטע VARIABLES.

  10. בחר צעד לתוך.

  11. המשך לבחור שלב לתוך עד שההודעה Process1 תוצג.

  12. שים לב Process1 כי הוא מדווח שהוא עובד על מוצר חדש.

  13. התחשב לרגע ביתרון שמציע נקודות עצירה מותנה.

    בתרחיש זה של עיבוד נתונים מדומה, יש סיכוי של 1% שמוצר הוא new. אם אתה משתמש בנקודות עצירה רגילות כדי לאתר באגים בבעיה, יהיה עליך לעבור על הניתוח של כ- 100 new מוצרים כדי למצוא את אחד המוצרים שבהם אתה מעוניין.

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

  14. השתמש בלחצן עצור כדי להפסיק את ביצוע הקוד.

מזל טוב! הגדרת בהצלחה נקודת עצירה מותנית.

תקציר

להלן שני דברים חשובים שיש לזכור ביחידה זו:

  • השתמש בנקודות עצירה רגילות כדי להשהות יישום בכל פעם שתיתקל בנקודות עצירה.
  • השתמש בנקודות עצירה מותנית כדי להשהות יישום כאשר ביטוי בוליאני מוערך כ- true.