أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية التتبع والتصحيح في Visual C#

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

اضغط هنا لرابط المقالة باللغة الانجليزية815788
للحصول على إصدار Microsoft Visual Basic.NET من هذه المقالة، راجع 313417 .
الموجز
توضح هذه المقالة كيفية استخدام فئات التتبع و التصحيح . تتوفر هذه الفئات في Microsoft.NET Framework. يمكنك استخدام هذه الفئات لتوفير معلومات حول أداء التطبيق أثناء تطوير التطبيق، أو بعد النشر للإنتاج. هذه الفئات هي جزء واحد فقط من الميزات آلات المتوفرة في.NET Framework.

عودة إلى الأعلى

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة وحزم الخدمات التي تحتاجها:
  • نظام التشغيل Microsoft Windows 2000 أو نظام التشغيل Microsoft Windows XP أو نظام التشغيل Microsoft Windows Server 2003
  • Microsoft Visual C#
تفترض هذه المقالة أنك معتاد على تصحيح البرنامج أيضا.

عودة إلى الأعلى

وصف للتقنية


الخطوات إنشاء نموذج باستخدام فئة التصحيح المقطع عرض كيفية إنشاء تطبيق وحدة تحكم يستخدم فئة التصحيح لتوفير معلومات حول تنفيذ البرنامج.

عند تشغيل البرنامج، يمكنك استخدام أساليب الفئة Debug لإنتاج الرسائل التي تساعدك على مراقبة تسلسل تنفيذ برنامج للكشف عن الأعطال، أو لتوفير معلومات قياس الأداء. بشكل افتراضي، تظهر الرسائل التي تنتج فئة التصحيح في نافذة الإخراج من Visual Studio تطوير بيئة المتكاملة (IDE).

يستخدم نموذج التعليمات البرمجية الأسلوب الإشارة لإنتاج رسالة متبوعاً بفاصل خط. عند استخدام هذا الأسلوب لإنشاء رسالة، تظهر كل رسالة على سطر منفصل في إطار الإخراج.

عند استخدام الأسلوب تأكيد من الفئة Debug ، يعرض الإطار إخراج رسالة فقط إذا تم تقييم شرط محدد إلى false. تظهر الرسالة أيضا في مربع حوار مشروط للمستخدم. يتضمن مربع الحوار الرسالة اسم المشروع ورقم كشف Debug.Assert . يتضمن مربع الحوار أيضا أزرار الأوامر الثلاثة التالية:
  • إيقاف: علامات التطبيق قيد التشغيل.
  • إعادة المحاولة: يدخل التطبيق وضع التصحيح.
  • تجاهل: أبليكاتيونبروسيدس.
المستخدم يجب النقر فوق أحد هذه الأزرار قبل متابعة التطبيق.

يمكنك أيضا توجيه الإخراج من فئة Debug إلى وجهات مختلفة عن إطار الإخراج. فئة التصحيح قد جمع المسمى المستمعين تتضمن كائنات وحدة الإصغاء .

كل كائن إصغاءتصحيح الإخراج بمراقبة وتوجيه الإخراج إلى هدف محدد.

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

تتضمن بعض أهداف النواتج المحتملة ما يلي:
  • إطار وحدة التحكم باستخدام الخاصية System.Console.Out .
  • ملف نصي (txt.) باستخدام عبارة System.IO.File.CreateText("FileName.txt") .
بعد إنشاء كائن TextWriterTraceListener ، يجب إضافة الكائن إلى مجموعة Debug.Listeners لتلقي إخراج التصحيح.

عودة إلى الأعلى

إنشاء نموذج باستخدام فئة التصحيح

  1. بدء إصدار Express Visual Studio أو Visual C#.
  2. إنشاء بروجيكتناميد تطبيق Visual C# وحدة تحكم جديد conInfo. يتم إنشاء Class1 في Visual Studio.NET. يتم إنشاء "برنامج. cs" في Visual Studio 2005.
  3. إضافة مساحة الاسم التالية في أعلى في الفئة 1 أو برنامج. cs.
    using System.Diagnostics;
  4. لتهيئة المتغيرات تحتوي على معلومات حول أبرودوكت، إضافة عبارات تعريف التالية إلى الأسلوب الرئيسي :
    string sProdName = "Widget";int iUnitQty = 100;double dUnitCost = 1.03;
  5. تحديد الرسالة التي تنتج الفئة كمعلمة أسلوب WriteLine فيرستينبوت. اضغط تركيبة المفاتيح CTRL + ALT + O تأكد من رؤية نافذة الإخراج.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. لسهولة القراءة، استخدم الأسلوب المسافة البادئة لوضع مسافة بادئة الرسائل التالية في إطار الإخراج:
    Debug.Indent();
  7. لعرض محتوى المتغيرات المحددة، استخدم الأسلوب WriteLine كما يلي:
    Debug.WriteLine("The product name is " + sProdName);Debug.WriteLine("The available units on hand are" + iUnitQty.ToString());Debug.WriteLine("The per unit cost is " + dUnitCost.ToString());
  8. يمكنك أيضا استخدام الأسلوب الإشارة لعرض مساحة الاسم واسم الفئة لكائن أنيكسيستينت. على سبيل المثال، التعليمات البرمجية التالية تعرض مساحة الاسم System.Xml.XmlDocument في نافذة الإخراج:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();Debug.WriteLine(oxml);
  9. لتنظيم الإنتاج، يمكنك تضمين معلمة أسلوب WriteLine الإدخال الثاني، أنوبشونال للفئة. إذا قمت بتحديد فئة، يتم تنسيق الرسالة أووتبوتويندوو "الفئة: الرسالة." على سبيل المثال، التعليمات البرمجية السطر الأول من thefollowing يعرض "حقل: اسم المنتج هو عنصر واجهة المستخدم" في أووتبوتويندوو:
    Debug.WriteLine("The product name is " + sProdName,"Field");Debug.WriteLine("The units on hand are" + iUnitQty,"Field");Debug.WriteLine("The per unit cost is" + dUnitCost.ToString(),"Field");Debug.WriteLine("Total Cost is  " + (iUnitQty * dUnitCost),"Calc");
  10. عرض نافذة الإخراج الرسائل فقط إذا تم تقييم الشرط أديسيجناتيد على صواب باستخدام أسلوب WriteLineIf الفئة Debug . يتم تقييم الشرط باراميتيروف الإدخال الأول أسلوب WriteLineIf . المعلمة الثانية WriteLineIf هي الرسالة التي تظهر فقط إذا تم تقييم الشرط في فيرستباراميتير إلى true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");
  11. استخدام الأسلوب تأكيد من الفئة Debug حيث يعرض الإطار إخراج الرسالة فقط إذا تم تقييم الشرط aspecified إلى false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear");Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost < 1 is false");
  12. إنشاء كائنات TextWriterTraceListener لإطار وحدة التحكم (tr1) و namedOutput.txt ملف نص (tr2) ثم قم بإضافة كل كائن إلى مجموعة وحدات إصغاء التصحيح :
    TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);Debug.Listeners.Add(tr1);        TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));Debug.Listeners.Add(tr2);
  13. لسهولة القراءة، استخدم الأسلوب Unindent لإزالة المسافة البادئة للرسائل اللاحقة التي تنشئ فئةالتصحيح . عند استخدام مسافة بادئة واﻷساليب Unindent معا، يمكن التمييز القارئ الإخراج كمجموعة.
    Debug.Unindent();Debug.WriteLine("Debug Information-Product Ending");
  14. للتأكد من أن كل كائن مصغي يتلقى الإخراج الخاص به، باستدعاء الأسلوب مسح للمخازن المؤقتة فئة التصحيح :
    Debug.Flush();
عودة إلى الأعلى

استخدام فئة التتبع

يمكنك أيضا استخدام فئة التتبع لإنتاج رسائل مراقبة تنفيذ أحد التطبيقات. مشاركة الفئات التتبعوتصحيح معظم الأساليب نفس لإنتاج الإخراج، بما في ذلك ما يلي:
  • WriteLine
  • WriteLineIf
  • المسافة البادئة
  • إزالة المسافة البادئة
  • تأكيد
  • مسح
يمكنك استخدام فئات التصحيح و التتبع بشكل منفصل أو معا في نفس التطبيق. في مشروع "تكوين الحل يصحح" كل من تتبع و تصحيح الإخراج نشطين. ينشئ المشروع الإخراج من كل من هذه الفئات إلى كافة الكائنات وحدة الإصغاء . ومع ذلك، ينشئ مشروع "تكوين الحل إصدار" فقط الإخراج من فئة التتبع . يتجاهل مشروع "تكوين الحل إصدار" أي استدعاءات أسلوب فئة التصحيح .
Trace.WriteLine("Trace Information-Product Starting ");Trace.Indent();Trace.WriteLine("The product name is "+sProdName);Trace.WriteLine("The product name is"+sProdName,"Field" );Trace.WriteLineIf(iUnitQty > 50, "This message WILL appear");Trace.Assert(dUnitCost > 1, "Message will NOT appear");        Trace.Unindent();Trace.WriteLine("Trace Information-Product Ending");Trace.Flush();Console.ReadLine();
عودة إلى الأعلى

تحقق من أنه يعمل

  1. تأكد من أن تصحيح تكوين الحل الحالي.
  2. إذا كان إطار مستكشف الحل نوتفيسيبلي، اضغط تركيبة المفاتيح CTRL + ALT + L لعرض ثيسويندوو.
  3. انقر نقراً مزدوجاً فوق conInfo، ومن ثم انقر فوقخصائص.
  4. في الجزء الأيمن من صفحة خصائص conInfo ضمن مجلدالتكوين ، تأكد من أن يشير السهمتصحيح الأخطاء.

    ملاحظة: في 2005 Visual C# و Visual C# 2005 Express Edition، انقر فوق تصحيح في الصفحة conInfo .
  5. أعلى المجلد تكوين ، فيتكوين مربع القائمة المنسدلة، انقر فوق Active(Debug) أو تصحيحومن ثم انقر فوقموافق. في 2005 Visual C# و Visual C# 2005 Express Edition، انقر فوق نشط (تصحيح) أو التصحيح في مربع القائمة المنسدلة " تكوين " في صفحة التصحيح ومن ثم انقر فوق حفظ القائمة ملف .
  6. اضغط على CTRL + ALT + O لعرض إطار الإخراج.
  7. اضغط المفتاح F5 تشغيل التعليمات البرمجية. عند ظهور مربع الحوارفشل في التأكيد ، انقر فوق "تجاهل".
  8. في إطار وحدة التحكم، اضغط ENTER. يجب عرض الإخراج مشابهة لما يلي شولدفينيش برنامج وإطار الإخراج
        Debug Information-Product Starting     The product name is Widget    The available units on hand are100    The per unit cost is 1.03    System.Xml.XmlDocument    Field: The product name is Widget    Field: The units on hand are100    Field: The per unit cost is1.03    Calc: Total Cost is  103    This message WILL appear    ---- DEBUG ASSERTION FAILED -------- Assert Short Message ----Message will appear since dUnitcost  < 1 is false---- Assert Long Message ----    at Class1.Main(String[] args)  <%Path%>\class1.cs(34)    The product name is Widget    The available units on hand are100    The per unit cost is 1.03Debug Information-Product EndingTrace Information-Product Starting     The product name is Widget    Field: The product name isWidget    This message WILL appearTrace Information-Product Ending                    
  9. إطار وحدة التحكم وملف Output.txt يجب أن ديسبلايثي المخرجات التالية:
    The product name is Widget    The available units on hand are 100    The per unit cost is 1.03Debug Information-Product EndingTrace Information-Product Starting     The product name is Widget    Field: The product name is Widget    This message WILL appearTrace Information-Product Ending			
ملاحظة: الملف Output.txt الموجود في نفس الدليل ك conInfo القابل للتنفيذ (conInfo.exe). بشكل عام، هذا هو المجلد \bin تخزين مصدر المشروع. افتراضياً، يكون هذا هو C:\Documents and Settings\تسجيل دخول المستخدمProjects\conInfo\bin ستوديو \My Documents\Visual. في 2005 Visual C# و Visual C# 2005 Express Edition، يوجد الملف Output.txt في المجلد التالي:
C:\Documents and Settings\تسجيل دخول المستخدم2005\Projects\conInfo\conInfo\bin\Debug ستوديو \My Documents\Visual


عودة إلى الأعلى

إتمام سرد التعليمات البرمجية

   using System;   using System.Diagnostics;   class Class1   {      [STAThread]      static void Main(string[] args)      {         string sProdName = "Widget";         int iUnitQty = 100;         double  dUnitCost = 1.03;         Debug.WriteLine("Debug Information-Product Starting ");         Debug.Indent();         Debug.WriteLine("The product name is "+sProdName);         Debug.WriteLine("The available units on hand are"+iUnitQty.ToString());         Debug.WriteLine("The per unit cost is "+ dUnitCost.ToString());         System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();         Debug.WriteLine(oxml);         Debug.WriteLine("The product name is "+sProdName,"Field");         Debug.WriteLine("The units on hand are"+iUnitQty,"Field");         Debug.WriteLine("The per unit cost is"+dUnitCost.ToString(),"Field");         Debug.WriteLine("Total Cost is  "+(iUnitQty * dUnitCost),"Calc");         Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");         Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");         Debug.Assert(dUnitCost > 1, "Message will NOT appear");         Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost  < 1 is false");         TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);         Debug.Listeners.Add(tr1);                 TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));         Debug.Listeners.Add(tr2);                   Debug.WriteLine("The product name is "+sProdName);         Debug.WriteLine("The available units on hand are"+iUnitQty);         Debug.WriteLine("The per unit cost is "+dUnitCost);         Debug.Unindent();         Debug.WriteLine("Debug Information-Product Ending");         Debug.Flush();                  Trace.WriteLine("Trace Information-Product Starting ");         Trace.Indent();         Trace.WriteLine("The product name is "+sProdName);         Trace.WriteLine("The product name is"+sProdName,"Field" );         Trace.WriteLineIf(iUnitQty > 50, "This message WILL appear");         Trace.Assert(dUnitCost > 1, "Message will NOT appear");                 Trace.Unindent();         Trace.WriteLine("Trace Information-Product Ending");         Trace.Flush();         Console.ReadLine();      }			   }


عودة إلى الأعلى

استكشاف أخطاء وإصلاحها

  • إذا كان نوع تكوين الحل هو الإصدار، يتم تجاهل الإخراج فئة التصحيح .
  • بعد إنشاء فئة TextWriterTraceListener لهدف معين، يتلقى TextWriterTraceListener الإخراج من الفئات التصحيح و التتبع . يحدث هذا بغض النظر عن ما إذا كنت تستخدم أسلوب إضافة فئة التصحيح أو تتبع لإضافة TextWriterTraceListener إلى فئة المستمعين .
  • إذا قمت بإضافة كائن المستمعين لنفس الهدف في فئات التصحيح و التتبع ، كل سطر الإخراج مكرر، بغض النظر عن ما إذا كانتصحيح أو تتبع ينشئ الإخراج.
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);         Debug.Listeners.Add(myWriter);                 TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);         Trace.Listeners.Add(myCreator);         
عودة إلى الأعلى
مراجع
لمزيد من المعلومات، راجع المواضيع التالية في وثائق مكتبة الفئات.NET Framework: عودة إلى الأعلى

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 815788 - آخر مراجعة: 08/20/2014 00:49:00 - المراجعة: 5.0

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# 2005, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbprogramming kbdebug kbnamespace kbhowtomaster kbmt KB815788 KbMtar
تعليقات
html>>&t=">