تمرين - التسجيل والتتبع
الآن بعد أن بدأ التطبيق في التطوير، من الجيد إضافة المزيد من التشخيصات إلى المنطق لمساعدة المطورين في أثناء إضافة ميزات جديدة. يمكننا استخدام معرفتنا الجديدة بتشخيصات التصحيح للقيام بهذه المهمة.
الكتابة إلى وحدة تحكم التصحيح
قبل أن نقوم بتصحيح التطبيق، دعنا نضيف المزيد من تشخيصات التصحيح. يمكن أن تساعد التشخيصات الإضافية في تشخيص التطبيق أثناء تشغيله تحت تتبع الأخطاء.
في الجزء العلوي من
Program.csالملف، أضف عبارة جديدةusingلإحضارهاSystem.Diagnosticsحتى نتمكن من استخدام الأساليبDebug.using System.Diagnostics;أضف
WriteLineعبارات في بدايةFibonacciالأسلوب للحصول على الوضوح عند تصحيح الأخطاء من خلال التعليمات البرمجية.Debug.WriteLine($"Entering {nameof(Fibonacci)} method"); Debug.WriteLine($"We are looking for the {n}th number");في نهاية حلقة لدينا
for، يمكننا إخراج كل قيمة. أو، يمكن أن نستخدم عبارة طباعة شرطية باستخدامWriteIfأوWriteLineIf. أضف سطر طباعة فقط عندما تكونsum1 في نهاية الحلقة.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}"); }قم بتصحيح التطبيق. يجب أن تشاهد الإخراج التالي:
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. أحسنت!