تكوين نقاط التوقف الشرطية في C#
يدعم مصحح أخطاء C# ل Visual Studio Code خيار تكوين نقطة توقف يتم تشغيلها فقط إذا تم استيفاء شرط. يسمى هذا النوع من نقاط التوقف نقطة توقف شرطية. يمكن تكوين نقاط التوقف الشرطية مباشرة أو عن طريق تحرير نقطة توقف موجودة.
إشعار
يدعم Visual Studio Code أيضا نقطة توقف شرطية يتم تشغيلها استنادا إلى عدد المرات التي تم فيها "الوصول إلى نقطة التوقف".
لنفترض أنك تقوم بتصحيح أخطاء تطبيق يعالج معلومات المنتج في صفيف سلسلة متعدد الأبعاد. يتضمن الصفيف آلاف نقاط البيانات. يبدو أن المشكلة التي تقوم بتصحيح الأخطاء تحدث للمنتجات التي تم وضع علامة عليها على أنها new. تعالج التعليمات البرمجية الصفيف داخل for حلقة. تحتاج إلى تعيين نقطة توقف داخل الحلقة، ولكنك تريد فقط إيقافها مؤقتا عندما تكون newالمنتجات .
استخدام نقطة توقف قياسية لفحص تطبيق معالجة البيانات
استبدل محتويات ملف 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.لإنشاء بيانات لعمليات المحاكاة، أضف الأسلوب التالي إلى نهاية ملف 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ينشئ الأسلوب 2000 معرف منتج عشوائي ويعين قيمةexistingأوnewأوobsoleteلحقل وصف المنتج. هناك حوالي 1% فرصة أن يتم وضع علامةnewعلى المنتجات .لمحاكاة معالجة البيانات، أضف الطرق التالية إلى نهاية ملف 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.في قائمة ملف Visual Studio Code، حدد Save.
بالقرب من أعلى ملف Program.cs، قم بتعيين نقطة توقف على سطر التعليمات البرمجية التالي:
result = Process1(products, i);افتح طريقة العرض RUN AND DEBUG، ثم حدد Start Debugging.
استخدم Step Into للتنقل عبر التعليمات البرمجية ل
Process1وProcess2.لاحظ التحديثات لمقاطع المتغيرات و CALL STACK في طريقة العرض RUN AND DEBUG.
استمر في استخدام Step Into للسير عبر التعليمات البرمجية حتى ترى أن
iيساوي 3.يعرض قسم VARIABLES في طريقة عرض RUN AND DEBUG القيمة المعينة إلى
i.لاحظ أن
Process1الرسائل وعرضهاProcess2على لوحة وحدة تحكم DEBUG. قد يتطلب التطبيق الحقيقي تفاعلات المستخدم أثناء معالجة البيانات. قد تعتمد بعض التفاعلات على البيانات التي تتم معالجتها.استخدم الزر Stop لإيقاف تنفيذ التعليمات البرمجية.
تكوين نقطة توقف شرطية باستخدام تعبير
تعد نقطة التوقف القياسية رائعة للتنقل عبر تطبيق معالجة البيانات. ومع ذلك، في هذه الحالة كنت مهتما بالمنتجات new ولا تريد الاطلاع على تحليل كل منتج للعثور على تلك التي هي new. يعد هذا السيناريو مثالا جيدا على الوقت الذي يجب فيه استخدام نقاط التوقف الشرطية.
انقر بزر الماوس الأيمن فوق نقطة التوقف الموجودة، ثم حدد تحرير نقطة التوقف.
أدخِل التعبير التَالِي:
products[i,1] == "new";لاحظ أنه لم يعد يتم عرض التعبير بعد الضغط على مفتاح الإدخال Enter.
لعرض التعبير مؤقتا، مرر مؤشر الماوس فوق نقطة التوقف (نقطة حمراء).
لتشغيل التطبيق الخاص بك مع تكوين نقطة التوقف الشرطية، حدد بدء تصحيح الأخطاء.
انتظر حتى يتوقف التطبيق مؤقتا عند نقطة التوقف الشرطية.
لاحظ قيمة المعروضة
iضمن قسم VARIABLES.في شريط أدوات عناصر التحكم في تتبع الأخطاء ، حدد متابعة
لاحظ أنه تم تحديث قيمة
iقسم VARIABLES.حدد خطوة إلى.
تابع تحديد Step Into حتى
Process1يتم عرض الرسالة.لاحظ أنه
Process1يبلغ عن أنه يعمل على منتج جديد .خذ لحظة للنظر في الميزة التي تقدمها نقاط التوقف الشرطية.
في سيناريو معالجة البيانات المحاكاة هذا، هناك حوالي 1% فرصة أن المنتج هو
new. إذا كنت تستخدم نقطة توقف قياسية لتصحيح المشكلة، فستحتاج إلى الاطلاع على تحليل حوالي 100 منتج للعثور على أحدnewالمنتجات التي تهتم بها.يمكن أن توفر لك نقاط التوقف الشرطية الكثير من الوقت عندما تقوم بتصحيح أحد التطبيقات.
استخدم الزر Stop لإيقاف تنفيذ التعليمات البرمجية.
تهانينا! لقد قمت بتكوين نقطة توقف شرطية بنجاح.
خلاصة
فيما يلي أمران مهمان يجب تذكرهما من هذه الوحدة:
- استخدم نقطة توقف قياسية لإيقاف تطبيق مؤقتا في كل مرة تتم فيها مصادفة نقطة توقف.
- استخدم نقطة توقف شرطية لإيقاف تطبيق مؤقتا عند تقييم تعبير منطقي إلى
true.