تمرين - تعيين نقاط التوقف

مكتمل

يتم استخدام نقاط التوقف أثناء تنفيذ إيقاف عملية التصحيح مؤقتا. يمكنك هذا من تعقب المتغيرات وفحص التسلسل الذي يتم فيه تنفيذ التعليمات البرمجية الخاصة بك. تعد نقاط التوقف طريقة رائعة لبدء عملية تصحيح الأخطاء.

تعيين نقطة توقف

في وقت سابق من هذه الوحدة، أكملت تمرين حيث قمت بتشغيل تطبيق في مصحح الأخطاء. عرض التطبيق "رسائل الترحيب" في لوحة وحدة تحكم DEBUG. في نهاية التمرين، لاحظت أن التعليمات البرمجية تكرر تحية أندرو بطريقة غير متوقعة.

في هذا التمرين، ستستخدم نقطة توقف لمساعدتك في تحديد المشكلة.

  1. تأكد من أن ملف Program.cs يحتوي على نموذج التعليمات البرمجية التالي:

    /* 
    This code uses a names array and corresponding methods to display
    greeting messages
    */
    
    string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" };
    
    string messageText = "";
    
    foreach (string name in names)
    {
        if (name == "Sophia")
            messageText = SophiaMessage();
        else if (name == "Andrew")
            messageText = AndrewMessage();
        else if (name == "AllGreetings")
            messageText = SophiaMessage();
            messageText = messageText + "\n\r" + AndrewMessage();
    
        Console.WriteLine(messageText + "\n\r");
    }
    
    bool pauseCode = true;
    while (pauseCode == true);
    
    static string SophiaMessage()
    {
        return "Hello, my name is Sophia.";
    }
    
    static string AndrewMessage()
    {
        return "Hi, my name is Andrew. Good to meet you.";
    }
    
  2. استخدم أدوات مصحح أخطاء Visual Studio Code لتعيين نقطة توقف على سطر التعليمات البرمجية الأول داخل الحلقة foreach .

    لقطة شاشة تعرض نقطة توقف في التعليمات البرمجية.

    بقشيش

    أحد الخيارات السهلة للتبديل بين تشغيل/إيقاف تشغيل نقطة توقف هو تحديد (النقر بزر الماوس الأيسر) المنطقة الموجودة على يسار رقم السطر. يمكن أيضا تعيين نقاط التوقف باستخدام Run القائمة وباستخدام اختصارات لوحة المفاتيح.

  3. في قائمة Run ، حدد Start Debugging.

  4. لاحظ أن تنفيذ التعليمات البرمجية يتوقف مؤقتا عند نقطة التوقف، وأن سطر التعليمات البرمجية الحالي مميز في المحرر.

    لقطة شاشة تعرض تنفيذ التعليمات البرمجية متوقف مؤقتا على نقطة توقف.

  5. في شريط أدوات عناصر التحكم في تتبع الأخطاء، حدد خطوة إلى.

    يمكنك تمرير مؤشر الماوس فوق الأزرار الموجودة على شريط أدوات عناصر التحكم في تتبع الأخطاء لعرض تسميات الأزرار.

  6. لاحظ أن تنفيذ التعليمات البرمجية يتقدم إلى سطر التعليمات البرمجية التالي ويتوقف مؤقتا:

    messageText = SophiaMessage();
    

    يعين سطر التعليمات البرمجية هذا القيمة المرجعة للأسلوب SophiaMessage إلى متغير messageTextالسلسلة .

  7. خذ لحظة للنظر في سبب تحديد Step Into الذي أدى إلى هذه النتيجة.

    • يتم استخدام الزر خطوة إلى للتقدم إلى العبارة القابلة للتنفيذ التالية.
    • نظرا لأن العنصر الأول في names الصفيف هو Sophia والعبارة if تتحقق من الاسم Sophia، يتم تقييم التعبير إلى true وينتقل تنفيذ التعليمات البرمجية إلى كتلة التعليمات البرمجية من العبارة if .
  8. في شريط أدوات عناصر التحكم في تتبع الأخطاء، حدد خطوة إلى.

  9. لاحظ أن تنفيذ التعليمات البرمجية SophiaMessage يتقدم إلى الأسلوب ويتوقف مؤقتا.

    لقد تقدم الزر خطوة إلى إلى سطر التعليمات البرمجية القابل للتنفيذ التالي. سطر التعليمات البرمجية القابل للتنفيذ التالي ليس رقم السطر التالي في الملف، بل العبارة التالية في مسار التنفيذ. في هذه الحالة، العبارة القابلة للتنفيذ التالية هي نقطة الإدخال إلى SophiaMessage الأسلوب .

  10. في شريط أدوات عناصر التحكم في تتبع الأخطاء ، حدد خطوة إلى الخارج.

  11. لاحظ أن تنفيذ التعليمات البرمجية يعود إلى سطر التعليمات البرمجية SophiaMessage الذي يسمى الأسلوب ويتوقف مؤقتا.

  12. خذ لحظة للنظر في سبب قيام تحديد Step Out بإنتاج هذه النتيجة.

    عند داخل أسلوب، يكمل الزر خطوة إلى الخارج الأسطر المتبقية من الأسلوب الحالي ثم يعود إلى سياق التنفيذ الذي استدعى الأسلوب.

  13. في شريط أدوات عناصر التحكم في تتبع الأخطاء، حدد خطوة إلى.

  14. لاحظ أن تنفيذ التعليمات البرمجية يتقدم إلى سطر التعليمات البرمجية التالي ويتوقف مؤقتا:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. خذ لحظة للنظر في سبب تقدم التنفيذ إلى سطر التعليمات البرمجية هذا.

    على الرغم من أن المسافة البادئة للتعليمات البرمجية تعني أن سطر التعليمات البرمجية هذا جزء من كتلة التعليمات البرمجية else if للبيان، فإنه ليس كذلك. قد يساعد استخدام الأقواس {} المتعرجة لتعريف كتل التعليمات البرمجية لهذه if - else if البنية على تجنب هذا الخطأ. أثناء كتابة التعليمات البرمجية، ستتم إضافة رسالة أندرو إلى messageText كل مرة يتكرر فيها التكرار الحلقي.

التحقق من تحديثات التعليمات البرمجية

بمجرد عزل مشكلة في التعليمات البرمجية الخاصة بك، يجب تحديث التعليمات البرمجية الخاصة بك ثم التحقق من إصلاح المشكلة.

  1. في شريط أدوات عناصر التحكم في تتبع الأخطاء ، حدد إيقاف.

  2. خذ دقيقة لإصلاح منطق التعليمات البرمجية.

    لديك بعض الخيارات لإصلاح المشكلة المحددة في التعليمات البرمجية الخاصة بك. على سبيل المثال:

    • يمكنك الاحتفاظ بخطوط التعليمات البرمجية الموجودة وإضافة أقواس {} متعرجة إلى البنية if لكل كتلة تعليمات برمجية.

    • يمكنك دمج سطري التعليمات البرمجية اللذين يتبعان العبارة النهائية else if ، وتشكيل عبارة واحدة كما يلي:

      else if (name == "AllGreetings")
          messageText = SophiaMessage() + "\n\r" + AndrewMessage();
      

    وفي كلتا الحالتين، يجب أن تتضمن التعليمات البرمجية المحدثة استدعاء داخل AndrewMessage كتلة التعليمات البرمجية عند name == "AllGreetings".

  3. في القائمة ملف، حدد حفظ.

  4. استخدم أدوات واجهة مستخدم مصحح الأخطاء لمسح نقطة التوقف التي قمت بتعيينها مسبقا.

  5. في قائمة Run ، حدد Start Debugging.

  6. تحقق من أن التعليمات البرمجية الخاصة بك تنتج الآن النتائج المتوقعة.

    Hello, my name is Sophia.
    
    Hi, my name is Andrew. Good to meet you.
    
    Hello, my name is Sophia.
    Hi, my name is Andrew. Good to meet you.
    
  7. في شريط أدوات عناصر التحكم في تتبع الأخطاء ، حدد إيقاف.

تهانينا! لقد استخدمت مصحح أخطاء Visual Studio Code بنجاح لمساعدتك في عزل مشكلة منطقية وتصحيحها.

خلاصة

فيما يلي بعض الأشياء المهمة التي يجب تذكرها من هذه الوحدة:

  • استخدم نقاط التوقف لإيقاف تنفيذ التعليمات البرمجية مؤقتا أثناء جلسة تصحيح الأخطاء.
  • استخدم Step Into من شريط أدوات عناصر تحكم تتبع الأخطاء لمراقبة سطر التعليمات البرمجية القابل للتنفيذ التالي.
  • استخدم Step Out من شريط أدوات عناصر تحكم تتبع الأخطاء للتقدم عبر الأسلوب الحالي والعودة إلى سطر التعليمات البرمجية الذي يسمى الأسلوب .