วิธีการสืบค้นกลับและตรวจแก้จุดบกพร่อง ใน Visual Basic 2005 หรือ ใน Visual Basic .NET

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

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

สรุป

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

ความต้องการ

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

คำอธิบายเกี่ยวกับเทคนิค

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

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

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

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

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

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

  1. Use Visual Basic 2005 or Visual Basic .NET to create a new Console Application project named conInfo. A public module named Module1 is added to the project by default.
  2. To initialize variables to contain information about a product, add the followingDimใบแจ้งยอด:
    Dim sProdName As String = "Widget"
    Dim iUnitQty As Integer = 100
    Dim dUnitCost As Decimal = 1.03
    					
  3. Specify the message that the class produces as the first input parameter of theWriteLineวิธีการ Press the CTRL+ALT+O key combination to ensure that the Output window is visible.
    Debug.WriteLine("Debug Information-Product Starting ")
    					
  4. For readability, use theIndentmethod to indent subsequent messages in the Output window:
    Debug.Indent()
    					
  5. To display the content of selected variables, use theWriteLinemethod as follows:
    Debug.WriteLine("The product name is " & sProdName)
    Debug.WriteLine("The available units on hand are " & iUnitQty)
    Debug.WriteLine("The per unit cost is " & dUnitCost)
    					
  6. คุณยังสามารถใช้การWriteLinemethod to display the namespace and the class name for an existent object. For example, the following code displays theSystem.Xml.XmlDocumentnamespace in the Output window:
    Dim oxml As New System.Xml.XmlDocument()
    Debug.WriteLine(oxml)
    					
  7. To organize the output, you can include a category as an optional, second input parameter of theWriteLineวิธีการ If you specify a category, the format of the Output window message is "category: message." For example, the first line of the following code displays "Field: The product name is Widget" in the Output window:
    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, "Field")
    Debug.WriteLine("Total Cost is" & iUnitQty * dUnitCost, "Calc")
    					
  8. The Output window can display messages only if a designated condition evaluates to true by using theWriteLineIfวิธีการนี้ตรวจแก้จุดบกพร่องคลาสที่ The condition to be evaluated is the first input parameter of theWriteLineIfวิธีการ The second parameter ofWriteLineIfis the message that appears only if the condition in the first parameter evaluates to true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear")
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear")
    					
  9. ใช้แบบAssertวิธีการนี้ตรวจแก้จุดบกพร่องclass so that the Output window displays the message only if a specified condition evaluates to false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear")
    Debug.Assert(dUnitCost < 1, "Message will appear")
    					
  10. Create theTextWriterTraceListenerobjects for the Console window (tr1) and for a text file named Output.txt (tr2), and then add each object to theDebug Listenerscollection:
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
            
    Dim tr2 As New _
      TextWriterTraceListener(System.IO.File.CreateText("Output.txt"))
    Debug.Listeners.Add(tr2)
    					
  11. For readability, use theUnindentmethod to remove the indentation for subsequent messages that theตรวจแก้จุดบกพร่องclass generates. เมื่อคุณใช้การIndentและUnindentmethods together, the reader can distinguish the output as group.
    Debug.Unindent()
    Debug.WriteLine("Debug Information-Product Ending")
    					
  12. To ensure that eachListenerobject receives all of its output, call theFlushmethod for theตรวจแก้จุดบกพร่องclass buffers:
    Debug.Flush()
    					

Using the Trace class

คุณยังสามารถใช้การTraceclass to produce messages that monitor the execution of an application. กระบวนการTraceและตรวจแก้จุดบกพร่องclasses share most of the same methods to produce output, including:
  • WriteLine
  • WriteLineIf
  • Indent
  • Unindent
  • Assert
  • Flush
คุณสามารถใช้ได้Traceและตรวจแก้จุดบกพร่องclasses separately or together in the same application. In a Debug Solution Configuration project, bothTraceและตรวจแก้จุดบกพร่องoutput are active. The project generates output from both of these classes to allListenerวัตถุ However, a Release Solution Configuration project only generates output from aTraceคลาสที่ The Release Solution Configuration project ignores anyตรวจแก้จุดบกพร่องclass method 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()
				

Verify that it works

  1. ตรวจสอบให้แน่ใจว่าตรวจแก้จุดบกพร่องis the current solution configuration.
  2. If the Solution Explorer window is not visible, press the CTRL+ALT+L key combination to display this window.
  3. คลิกขวาconInfoแล้ว คลิกคุณสมบัติ.
  4. In the left pane of the conInfo property page, under the Configuration folder, make sure that the arrow points toDebugging.
  5. Above the Configuration folder, in theconfigurationรายการหล่นลงกล่อง คลิกActive (Debug)หรือตรวจแก้จุดบกพร่องแล้ว คลิกตกลง.
  6. Press CTRL+ALT+O to display the Output window.
  7. กดแป้น F5 เพื่อเรียกใช้รหัส เมื่อการAssertion Failedกล่องโต้ตอบปรากฏขึ้น คลิกละเว้น.
  8. In the Console window, press ENTER. The program should finish, and the Output window should display the following output:
    Debug Information-Product Starting 
        The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
        System.Xml.XmlDocument
        Field: The product name is Widget
        Field: The units on hand are 100
        Field: The per unit cost is 1.03
        Calc: Total cost is 103
        This message WILL appear
        ---- DEBUG ASSERTION FAILED ----
    ---- Assert Short Message ----
    Message will appear
    ---- Assert Long Message ----
    
        at Module1.Main()  C:\Documents and Settings\Administrator\My 
        Documents\Visual Studio Projects\conInfo\Module1.vb(29)
    
        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
    						
  9. The Console window and the Output.txt file should display the following output:
    (The Output.txt file is located in the same directory as the conInfo 
    executable, conInfo.exe. Normally this is the \bin folder of where the 
    project source has been stored. By default that would be C:\Documents and 
    Settings\User login\My Documents\Visual Studio Projects\conInfo\bin)
        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
    						

แสดงรายการของรหัสการทำให้เสร็จสมบูรณ์

Module Module1
    Sub Main()
        Dim sProdName As String = "Widget"
        Dim iUnitQty As Integer = 100
        Dim dUnitCost As Decimal = 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)
        Debug.WriteLine("The per unit cost is " & dUnitCost)

        Dim oxml As 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, "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")

        Dim tr1 As New TextWriterTraceListener(System.Console.Out)
        Debug.Listeners.Add(tr1)

        Dim tr2 As 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()

    End Sub
End Module
				

การแก้ไขปัญหา

  • If the solution configuration type isรุ่นกระบวนการตรวจแก้จุดบกพร่องclass output is ignored.
  • หลังจากที่คุณสร้างคำTextWriterTraceListenerคลาสำหรับปลายทางเฉพาะTextWriterTraceListenerได้รับการออกจากนั้นTraceและตรวจแก้จุดบกพร่องคลาสที่ ปัญหานี้เกิดขึ้นคำนึงถึงว่าคุณใช้การaddวิธีการนี้Traceหรือตรวจแก้จุดบกพร่องคลาเพิ่มTextWriterTraceListenerไปlistenersคลาสที่
  • ถ้าคุณเพิ่มคำฟังวัตถุสำหรับปลายทางเหมือนกันในนั้นTraceและตรวจแก้จุดบกพร่องระดับชั้น แต่ละบรรทัดของการแสดงผลไม่ซ้ำ regardless ของหรือไม่ตรวจแก้จุดบกพร่องหรือTraceสร้างผลผลิต
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
    Dim tr2 As New TextWriterTraceListener(System.Console.Out)
    Trace.Listeners.Add(tr2)
    					

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

สำหรับข้อมูลเพิ่มเติม อ้างอิงถึงหัวข้อต่อไปนี้ในเอกสารประกอบของไลบรารีคลาสของ.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)


อย่างไรฉันทำ Instrument โปรแกรมประยุกต์ขนาดเล็กที่ มีการสืบค้นกลับหรือไม่http://samples.gotdotnet.com/quickstart/howto/doc/TraceDemo.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 313417 - รีวิวครั้งสุดท้าย: 10 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Keywords: 
kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster kbmt KB313417 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:313417

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

 

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