تمرين - التسجيل والتتبع

مكتمل

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

الكتابة إلى وحدة تحكم التصحيح

قبل أن نقوم بتصحيح التطبيق، دعنا نضيف المزيد من تشخيصات التصحيح. يمكن أن تساعد التشخيصات الإضافية في تشخيص التطبيق أثناء تشغيله تحت تتبع الأخطاء.

  1. في الجزء العلوي من Program.cs الملف، أضف عبارة جديدة using لإحضارها System.Diagnostics حتى نتمكن من استخدام الأساليب Debug .

    using System.Diagnostics;
    
  2. أضف WriteLine عبارات في بداية Fibonacci الأسلوب للحصول على الوضوح عند تصحيح الأخطاء من خلال التعليمات البرمجية.

    Debug.WriteLine($"Entering {nameof(Fibonacci)} method");
    Debug.WriteLine($"We are looking for the {n}th number");
    
  3. في نهاية حلقة لدينا for ، يمكننا إخراج كل قيمة. أو، يمكن أن نستخدم عبارة طباعة شرطية باستخدام WriteIf أو WriteLineIf. أضف سطر طباعة فقط عندما تكون sum 1 في نهاية الحلقة.

    for (int i = 2; i <= n; i++)
    {                  
        sum = n1 + n2;
        n1 = n2;
        n2 = sum;
        Debug.WriteLineIf(sum == 1, $"sum is 1, n1 is {n1}, n2 is {n2}");    
    }
    
  4. قم بتصحيح التطبيق. يجب أن تشاهد الإخراج التالي:

    Entering Fibonacci method
    We are looking for the 5th number
    sum is 1, n1 is 1, n2 is 1
    

التحقق من وجود الشروط مع التأكيد

في بعض الحالات، قد تحتاج إلى إيقاف تشغيل التطبيق بالكامل عند عدم استيفاء شرط معين. باستخدام Debug.Assert، يمكنك التحقق من وجود شرط وإخراج معلومات إضافية حول حالة التطبيق. دعونا نضيف اختيارًا قبل العبارة الناتجة مباشرةً للتأكد من n2 هو 5.

// If n2 is 5 continue, else break.
Debug.Assert(n2 == 5, "The return value is not 5 and it should be.");
return n == 0 ? n1 : n2;

منطق التطبيق الخاص بنا صحيح بالفعل، لذلك دعونا نحدث إلى Fibonacci(5);Fibonacci(6);، والذي يولد نتيجة مختلفة.

قم بتصحيح التطبيق. عند تشغيل Debug.Assert في التعليمات البرمجية، يقوم مصحح الأخطاء بإيقاف التطبيق حتى تتمكن من فحص المتغيرات، ونافذة المراقبة، ومكدس الاستدعاءات، والمزيد. كما يخرج الرسالة إلى وحدة تحكم التصحيح.

---- DEBUG ASSERTION FAILED ----
---- Assert Short Message ----
The return value is not 5 and it should be.
---- Assert Long Message ----

   at Program.<<Main>$>g__Fibonacci|0_0(Int32 n) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 23
   at Program.<Main>$(String[] args) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 3

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

dotnet run

يتم إنهاء التطبيق بعد فشل التأكيد وتسجيل المعلومات إلى إخراج التطبيق.

Process terminated. Assertion failed.
The return value is not 5 and it should be.
   at Program.<<Main>$>g__Fibonacci|0_0(Int32 n) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 23
   at Program.<Main>$(String[] args) in C:\Users\Jon\Desktop\DotNetDebugging\Program.cs:line 3

الآن، دعونا نشغل التطبيق في التكوين Release باستخدام الأمر التالي في المحطة الطرفية.

dotnet run --configuration Release

التطبيق يعمل حتى الانتهاء بنجاح لأننا لم نعد في التكوين Debug.

تهانينا، لقد قمت بتصحيح التعليمات البرمجية بنجاح وكفاءة باستخدام ميزات .NET، والتي تتضمن Debug.WriteLine و Debug.Assert. أحسنت!