Τρόπος ανίχνευσης και εντοπισμού σφαλμάτων της Visual Basic 2005 ή σε Visual Basic .NET

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 313417 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Για την έκδοση αυτού του άρθρου Microsoft Visual Basic 6.0, ανατρέξτε στην ενότητα161153.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο περιγράφει τον τρόπο χρήσης τουΟ εντοπισμός σφαλμάτωνκαι τοΑνίχνευσηςκλάσεις. Αυτές οι κλάσεις διατίθενται για το Microsoft .NET Framework. Μπορείτε να χρησιμοποιήσετε αυτές τις κλάσεις για την παροχή πληροφοριών σχετικά με τις επιδόσεις μιας εφαρμογής κατά την ανάπτυξη εφαρμογών ή μετά την ανάπτυξη παραγωγής. Αυτές οι κλάσεις είναι μόνο ένα μέρος των δυνατοτήτων εγκατάστασης οργάνων που είναι διαθέσιμες στο .NET Framework.

ΑΠΑΙΤΗΣΕΙΣ

Η ακόλουθη λίστα περιγράφει τα υλικού που συνιστώνται, λογισμικό, υποδομή δικτύου και τα service pack που χρειάζεστε:
  • Microsoft Windows 2000 ή Microsoft Windows XP
  • Microsoft Visual Basic 2005 ή Microsoft Visual Basic .NET
Αυτό το άρθρο προϋποθέτει επίσης ότι είστε εξοικειωμένοι με το πρόγραμμα εντοπισμού σφαλμάτων.

Η τεχνική περιγραφή

Τα βήματα στην ενότητα "Δημιουργία ενός δείγματος με την κλάση εντοπισμού σφαλμάτων" δείχνουν τον τρόπο δημιουργίας μιας εφαρμογής κονσόλας που χρησιμοποιεί τοΟ εντοπισμός σφαλμάτωνη κλάση για την παροχή πληροφοριών σχετικά με την εκτέλεση του προγράμματος.

Όταν εκτελείται το πρόγραμμα, μπορείτε να χρησιμοποιήσετε τις μεθόδους τουΟ εντοπισμός σφαλμάτωνη κλάση να παράγει μηνύματα που σας βοηθούν να παρακολουθείτε, να εντοπίσει δυσλειτουργίες ή για την παροχή πληροφοριών μέτρησης επιδόσεων. Από προεπιλογή, τα μηνύματα που τοΟ εντοπισμός σφαλμάτωνκλάση παράγει εμφανίζονται στο παράθυρο εκτύπωσης του Microsoft Visual Studio Integrated Development Environment (IDE).

Το δείγμα κώδικα που χρησιμοποιεί τοWriteLineμέθοδος για την παραγωγή ενός μηνύματος που ακολουθείται από μια γραμμή τερματισμού. Όταν χρησιμοποιείτε αυτήν τη μέθοδο για να παράγουν ένα μήνυμα, κάθε μήνυμα εμφανίζεται σε ξεχωριστή γραμμή στο παράθυρο "Έξοδος".

Εάν χρησιμοποιείτε τοΔιεκδίκησηςη μέθοδος τουΟ εντοπισμός σφαλμάτωνclass, the Output window displays a message only if a specified condition evaluates to false. The message also appears in a modal dialog box to the user. The dialog box includes the message, the project name, and theDebug.Assertstatement number. The dialog box also includes three command buttons:
  • Ματαίωση: The application stops running.
  • Προσπαθήστε ξανά: The application enters debug mode.
  • IGNORE: The application proceeds.
The user must click one of these buttons before the application can continue.

You can also direct output from theΟ εντοπισμός σφαλμάτωνclass to destinations other than the Output window. Για ναΟ εντοπισμός σφαλμάτωνclass has a collection namedListenersthat includesListenerδύο διαστάσεων. eachListenerobject monitorsΟ εντοπισμός σφαλμάτωνoutput and directs the output to a specified target. eachListenerΣτοListenerscollection receives any output that theΟ εντοπισμός σφαλμάτωνclass generates. Χρήση τουTextWriterTraceListenerclass to defineListenerδύο διαστάσεων. You can specify the target for aTextWriterTraceListenerclass through its constructor. Some possible output targets include:
  • The Console window by using theSystem.Console.OutΙδιότητα.
  • A text (.txt) file by using theSystem.IO.File.CreateText("FileName.txt"))πρόταση.
After you create aTextWriterTraceListenerobject, you must add the object to theDebug.Listenerscollection to receiveΟ εντοπισμός σφαλμάτωνoutput.

Create a sample with the Debug class

  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 theWriteLineη μέθοδος ως εξής:
    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η μέθοδος τουΟ εντοπισμός σφαλμάτωνCLASS. 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. Χρήση τουΔιεκδίκησηςη μέθοδος τουΟ εντοπισμός σφαλμάτων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

Μπορείτε επίσης να χρησιμοποιήσετε τοΑνίχνευσηςclass to produce messages that monitor the execution of an application. Για ναΑνίχνευσηςANDΟ εντοπισμός σφαλμάτωνclasses share most of the same methods to produce output, including:
  • WriteLine
  • WriteLineIf
  • Indent
  • Unindent
  • Διεκδίκησης
  • Flush
Μπορείτε να χρησιμοποιήσετε τοΑνίχνευσηςκαι τοΟ εντοπισμός σφαλμάτωνclasses separately or together in the same application. In a Debug Solution Configuration project, bothΑνίχνευσηςANDΟ εντοπισμός σφαλμάτωνoutput are active. The project generates output from both of these classes to allListenerδύο διαστάσεων. However, a Release Solution Configuration project only generates output from aΑνίχνευσηςCLASS. 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, και στη συνέχεια κάντε κλικ στο κουμπίΙδιότητες (Properties).
  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 theΡΥΘΜΙΣΕΙΣ ΠΑΡΑΜΕΤΡΩΝπλαίσιο αναπτυσσόμενης λίστας, κάντε κλικ στο κουμπίActive (Debug)ήΟ εντοπισμός σφαλμάτων, και στη συνέχεια κάντε κλικ στο κουμπίOk.
  6. Πιέστε τα πλήκτρα CTRL + ALT + O, για να εμφανίσετε το παράθυρο "Έξοδος".
  7. Press the F5 key to run the code. Όταν τοAssertion Failedεμφανίζεται το παράθυρο διαλόγου, κάντε κλικ στο κουμπίIGNORE.
  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
    						

Complete code listing

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 isReleaseΓια ναΟ εντοπισμός σφαλμάτωνclass output is ignored.
  • Αφού δημιουργήσετε μιαTextWriterTraceListenerclass for a particular target,TextWriterTraceListenerreceives output from theΑνίχνευσηςκαι τοΟ εντοπισμός σφαλμάτωνκλάσεις. This occurs regardless of whether you use theADDη μέθοδος τουΑνίχνευσηςή στοΟ εντοπισμός σφαλμάτωνclass to addTextWriterTraceListenerΓια να τοListenersCLASS.
  • If you add aListenerobject for the same target in theΑνίχνευσηςκαι τοΟ εντοπισμός σφαλμάτωνclasses, each line of output is duplicated, regardless of whetherΟ εντοπισμός σφαλμάτωνήΑνίχνευσηςgenerates the output.
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
    Dim tr2 As New TextWriterTraceListener(System.Console.Out)
    Trace.Listeners.Add(tr2)
    					

Αναφορές

For more information, refer to the following topics in the .NET Framework Class Library documentation:
Trace Class
http://msdn2.microsoft.com/en-us/library/system.diagnostics.trace(vs.71).aspx

Debug Class
http://msdn2.microsoft.com/en-us/library/system.diagnostics.debug(vs.71).aspx


How Do I Instrument a small application with tracing?http://samples.gotdotnet.com/quickstart/howto/doc/TraceDemo.aspx

Ιδιότητες

Αναγν. άρθρου: 313417 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster kbmt KB313417 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της 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