วิธีการสืบค้นกลับ และการตรวจแก้จุดบกพร่องใน Visual c#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 815788 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
สำหรับรุ่น Microsoft Visual Basic .NET ของบทความนี้ ดู313417.
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีใช้นี้ตรวจแก้จุดบกพร่องและTraceคลาสที่ คลาสที่เหล่านี้พร้อมใช้งานใน Microsoft .NET ชัน คุณสามารถใช้ระดับชั้นเหล่านี้เพื่อแสดงข้อมูลเกี่ยวกับประสิทธิภาพการทำงานของโปรแกรมประยุกต์ใน ระหว่างการพัฒนาโปรแกรมประยุกต์ หรือหลัง จากการใช้งานการผลิต คลาสที่เหล่านี้มีคุณลักษณะ instrumentation ที่พร้อมใช้งานใน.NET Framework เพียงบางส่วน

ความต้องการ

รายการต่อไปนี้แสดงฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่คุณต้องการ:
  • Microsoft Windows 2000 หรือ Microsoft Windows XP หรือ Microsoft Windows Server 2003
  • Microsoft Visual c#
บทความนี้ยังอนุมานว่า คุณไม่คุ้นเคยกับโปรแกรมตรวจแก้จุดบกพร่อง

คำอธิบายของเทคนิค


ขั้นตอนในการสร้างตัวอย่างที่ มีคลาสของการดีบักส่วนสาธิตวิธีการสร้างโปรแกรมประยุกต์คอนโซลที่ใช้ในการตรวจแก้จุดบกพร่องคลาเพื่อแสดงข้อมูลเกี่ยวกับการดำเนินการกับโปรแกรม

เมื่อโปรแกรมรัน คุณสามารถใช้วิธีการนี้ตรวจแก้จุดบกพร่องคลาสของข้อความที่ช่วยให้คุณตรวจสอบโปรแกรมดำเนินการลำดับ เพื่อตรวจหา malfunctions หรือให้ข้อมูลการวัดประสิทธิภาพการทำงาน การผลิต โดยค่าเริ่มต้น ข้อความที่จะตรวจแก้จุดบกพร่องคลาสที่จะปรากฏในหน้าต่างผลลัพธ์ของ Visual Studio สภาพแวดล้อมการพัฒนาแบบรวม (IDE)

ตัวอย่างรหัสที่ใช้ในWriteLineวิธีการเพื่อทำให้ข้อความที่ตาม ด้วยการ terminator ในบรรทัด เมื่อคุณใช้วิธีนี้ทำให้ข้อความ แต่ละข้อความปรากฏอยู่บนบรรทัดที่แยกต่างหากในหน้าต่างผลลัพธ์

เมื่อคุณใช้การassertวิธีการนี้ตรวจแก้จุดบกพร่องคลา หน้าต่างผลลัพธ์จะแสดงข้อความเฉพาะเมื่อเงื่อนไขที่ระบุตรวจสอบเป็นเท็จ นอกจากนี้ข้อความปรากฏขึ้นในกล่องโต้ตอบ modal ให้กับผู้ใช้ กล่องโต้ตอบประกอบด้วยข้อความ ชื่อโครงการ และDebug.Assertหมายเลขใบแจ้งยอด กล่องโต้ตอบมีคำสั่งสามปุ่มต่อไปนี้:
  • ยกเลิก:แอพลิเคชันหยุดทำงานอยู่
  • ลองอีกครั้ง:แอพลิเคชันที่เข้าสู่โหมดการตรวจแก้จุดบกพร่อง
  • ละเว้น:โปรแกรมประยุกต์ที่ดำเนินการต่อไป
ผู้ใช้ต้องคลิกปุ่มเหล่านี้อย่างใดอย่างหนึ่งก่อนที่โปรแกรมประยุกต์ที่สามารถดำเนินการต่อไป

คุณยังสามารถโดยตรงจากนั้นตรวจแก้จุดบกพร่องคลาไปยังปลายทางอื่นนอกเหนือจากหน้าต่างผลลัพธ์ กระบวนการตรวจแก้จุดบกพร่องคลาสที่มีชื่อคอลเลกชันlistenersซึ่งรวมถึงฟังวัตถุ

แต่ละฟังจอภาพของวัตถุตรวจแก้จุดบกพร่องแสดงผล และเป็นการชักจูงผลลัพธ์ไปยังปลายทางที่ระบุ

แต่ละฟังในการฟังคอลเลกชันได้รับผลลัพธ์ใด ๆ ที่นั้นตรวจแก้จุดบกพร่องคลาสที่สร้าง ใช้แบบTextWriterTraceListenerคลาเพื่อกำหนดฟังวัตถุ คุณสามารถระบุเป้าหมายสำหรับการTextWriterTraceListenerคลาผ่านทางการของตัวสร้าง

เป้าหมายของการแสดงผลที่เป็นไปได้บางรวมต่อไปนี้:
  • หน้าต่างคอนโซล โดยใช้การSystem.Console.Outคุณสมบัติ
  • แฟ้มข้อความ (.txt) โดยใช้การSystem.IO.File.CreateText("FileName.txt")คำสั่ง
หลังจากที่คุณสร้างคำTextWriterTraceListenerวัตถุ คุณต้องเพิ่มวัตถุไปยังDebug.Listenersคอลเลกชันจะได้รับผลลัพธ์ที่ดีบัก

สร้างตัวอย่างที่ มีคลาสของการดีบัก

  1. เริ่ม Visual Studio หรือ Edition c# Express Visual
  2. สร้างโครงการ Visual c# คอนโซลแอพพลิเคชันใหม่ชื่อconInfo. Class1 ถูกสร้างใน Visual Studio .NET Program.cs ถูกสร้างใน Visual Studio 2005
  3. เพิ่ม namespace ที่ต่อไปนี้ที่ด้านบนสุดใน Class1 หรือ Program.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. สำหรับ readability ใช้เยื้องวิธีการเยื้องข้อความที่ตามมาในหน้าต่างออก:
    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. คุณยังสามารถใช้การWriteLineวิธีการแสดงใน namespace และชื่อของคลาสของวัตถุ existent ตัวอย่างเช่น ต่อไปนี้รหัสแสดงSystem.Xml.XmlDocumentnamespace ในหน้าต่างออก:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
    Debug.WriteLine(oxml);
  9. เมื่อต้องการจัดระเบียบเอาต์พุ คุณสามารถรวมพารามิเตอร์ประเภทเป็นข้อความที่เลือก การป้อนข้อมูลที่สอง ของWriteLineวิธีการ ถ้าคุณระบุประเภท การจัดรูปแบบของผลลัพธ์เป็นข้อความในหน้าต่าง "ประเภท: ข้อความ" ตัวอย่างเช่น บรรทัดแรกของรหัสต่อไปนี้แสดง "เขตข้อมูล: ชื่อผลิตภัณฑ์เป็น Widget " ในการออกแบบหน้าต่าง:
    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วิธีการนี้ตรวจแก้จุดบกพร่องคลาสที่ เงื่อนไขการประเมินเป็นพารามิเตอร์สำหรับการป้อนค่าแรกของที่อยู่WriteLineIfวิธีการ พารามิเตอร์ตัวที่สองของWriteLineIfมีข้อความที่ปรากฏขึ้นถ้าเงื่อนไขในพารามิเตอร์แรกตรวจสอบการจริง
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");
    
  11. ใช้แบบassertวิธีการนี้ตรวจแก้จุดบกพร่องตรวจคลาเพื่อให้หน้าต่างผลลัพธ์แสดงข้อความเฉพาะเมื่อเงื่อนไขที่ระบุสอบเป็นเท็จ:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear");
    Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost < 1 is false");
    
  12. สร้างTextWriterTraceListenerแฟ้ม Output.txt ชื่อ (tr2), วัตถุ สำหรับหน้าต่างคอนโซล (tr1) และข้อความแล้ว เพิ่มแต่ละวัตถุไปยังการตรวจแก้จุดบกพร่อง Listenersคอลเลกชัน:
    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. สำหรับ readability ใช้unindentวิธีการเอาการย่อหน้าสำหรับข้อต่อมาความที่จะตรวจแก้จุดบกพร่องคลาสที่สร้าง เมื่อคุณใช้การเยื้องและunindentวิธีการรวมกัน ผู้อ่านสามารถแยกแยะผลลัพธ์เป็นกลุ่ม
    Debug.Unindent();
    Debug.WriteLine("Debug Information-Product Ending");
  14. ตรวจสอบให้แน่ใจว่าแต่ละฟังวัตถุได้รับผลลัพธ์ทั้งหมด เรียกการล้างวิธีการนี้ตรวจแก้จุดบกพร่องบัฟเฟอร์ของคลาส:
    Debug.Flush();

การใช้ระดับชั้นการติดตาม

คุณยังสามารถใช้การTraceคลาเพื่อทำให้ข้อความที่ตรวจสอบการดำเนินการของโปรแกรมประยุกต์ กระบวนการTraceและตรวจแก้จุดบกพร่องคลาสที่ใช้ร่วมกันมากที่สุดของวิธีการเดียวกันในการผลิตผลผลิต การรวมถึงต่อไปนี้:
  • WriteLine
  • WriteLineIf
  • เยื้อง
  • unindent
  • assert
  • ล้าง
คุณสามารถใช้ได้Traceและตรวจแก้จุดบกพร่องคลาแยกต่างหาก หรือเข้าด้วยกันในแอพลิเคชันเดียวกัน ในโครงการ Debug การกำหนดค่าโซลูชัน ทั้งสองอย่างTraceและตรวจแก้จุดบกพร่องเอาพุตที่ใช้งานอยู่ โครงการสร้างผลลัพธ์จากทั้งสองระดับชั้นเหล่านี้ทั้งหมดฟังวัตถุ อย่างไรก็ตาม การกำหนดค่าโซลูชันการนำออกใช้โครงการเท่านั้นสร้างผลลัพธ์จากแบบTraceคลาสที่ โครงการนำออกใช้การกำหนดค่าโซลูชันละเว้นใด ๆตรวจแก้จุดบกพร่องinvocations เมธอดของคลาสที่
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. ถ้าการExplorer โซลูชันมองไม่เห็นหน้าต่าง กด CTRL + ALT + L คีย์ชุดการแสดงหน้าต่างนี้
  3. คลิกขวาconInfoแล้ว คลิกคุณสมบัติ.
  4. ในบานหน้าต่างด้านซ้ายของหน้าคุณสมบัติ conInfo ภายใต้การconfigurationfolder, make sure that the arrow points toตรวจแก้จุดบกพร่อง.

    หมายเหตุ:In Visual C# 2005 and in Visual C# 2005 Express Edition, clickตรวจแก้จุดบกพร่องในการconInfoหน้า
  5. ข้างต้นแบบconfigurationโฟลเดอร์ ในการconfigurationรายการหล่นลงกล่อง คลิกใช้งานอยู่ (Debug)หรือตรวจแก้จุดบกพร่องแล้ว คลิกตกลง. ใน Visual 2005 c# และ Visual c# 2005 Express Edition คลิกการใช้งานอยู่ (ดีบัก)หรือตรวจแก้จุดบกพร่องในการconfigurationกล่องรายการหล่นลงในตรวจแก้จุดบกพร่องหน้า แล้วคลิกบันทึกในการแฟ้ม:เมนู
  6. กด CTRL + ALT + O เพื่อแสดงหน้าต่างผลลัพธ์
  7. กดแป้น F5 เพื่อเรียกใช้รหัส เมื่อการassertion ล้มเหลวกล่องโต้ตอบปรากฏขึ้น คลิกละเว้น.
  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.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name isWidget
        This message WILL appear
    Trace Information-Product Ending
                        
    
  9. หน้าต่างคอนโซลและแฟ้ม Output.txt ควรแสดงผลลัพธ์ต่อไปนี้:
    The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name is Widget
        This message WILL appear
    Trace Information-Product Ending			
    
หมายเหตุ:แฟ้ม Output.txt จะอยู่ในไดเรกทอรีเดียวกันเป็นแบบ conInfo กระทำ (conInfo.exe) โดยทั่วไป นี่คือโฟลเดอร์ \bin ที่เก็บต้นฉบับของโครงการ โดยค่าเริ่มต้น นี่คือ C:\Documents และ Settings\ผู้ใช้เข้าสู่ระบบ\My Documents\Visual Projects\conInfo\bin ภาพยนตร์ ใน Visual 2005 c# และ Visual c# 2005 Express Edition แฟ้ม Output.txt จะอยู่ในโฟลเดอร์ต่อไปนี้:
C:\Documents และ Settings\การเข้าสู่ระบบของผู้ใช้\My Documents\Visual 2005\Projects\conInfo\conInfo\bin\Debug ภาพยนตร์


รหัสการทำให้เสร็จสมบูรณ์ราย

   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ได้รับการออกจากนั้นTraceและตรวจแก้จุดบกพร่องคลาสที่ ปัญหานี้เกิดขึ้นคำนึงถึงว่าคุณใช้การaddวิธีการนี้Traceหรือตรวจแก้จุดบกพร่องคลาเพิ่มTextWriterTraceListenerไปlistenersคลาสที่
  • ถ้าคุณเพิ่มคำlistenersวัตถุสำหรับปลายทางเหมือนกันในนั้นTraceและตรวจแก้จุดบกพร่องระดับชั้น แต่ละบรรทัดของการแสดงผลไม่ซ้ำ regardless ของหรือไม่ตรวจแก้จุดบกพร่องหรือTraceสร้างผลผลิต
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
             Debug.Listeners.Add(myWriter);
            
             TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);
             Trace.Listeners.Add(myCreator);
             
    

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อต่อไปนี้ในการ.NET Framework ไลบรารีของคลาเอกสาร:
คลาสของการสืบค้นกลับ
.aspx http://msdn2.microsoft.com/en-us/library/system.diagnostics.trace (vs.71)

คลาสของการตรวจแก้จุดบกพร่อง
.aspx http://msdn2.microsoft.com/en-us/library/system.diagnostics.debug (vs.71)

คุณสมบัติ

หมายเลขบทความ (Article ID): 815788 - รีวิวครั้งสุดท้าย: 23 กันยายน 2554 - Revision: 3.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
Keywords: 
kbprogramming kbdebug kbnamespace kbhowtomaster kbmt KB815788 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:815788

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com