ModalitÓ di analisi e debug in Visual Basic 2005 o in Visual Basic.NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 313417 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato precedentemente pubblicato con il codice di riferimento I313417
Per una versione di Microsoft Visual Basic 6.0 di questo l'articolo, vedere 161153.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come utilizzare le classi Trace e Debug . Queste classi sono disponibili in Microsoft.NET Framework. ╚ possibile utilizzare queste classi per fornire informazioni relative al prestazioni di un'applicazione durante lo sviluppo di applicazioni o dopo distribuzione nell'ambiente di produzione. Queste classi sono solo una parte del funzionalitÓ di strumentazione disponibili nel.NET Framework.

Requisiti

Nell'elenco seguente sono indicati l'hardware consigliato, software, infrastruttura di rete e i service Pack necessari:
  • Microsoft Windows 2000 o Microsoft Windows XP
  • Microsoft Visual Basic 2005 o Microsoft Visual Basic.NET
In questo articolo si presuppone inoltre che abbia familiaritÓ con il programma il debug.

Descrizione della tecnica

La procedura nella sezione "Creare un campione con la classe Debug" viene illustrato come creare una console applicazione che utilizza la classe Debug per fornire informazioni sul programma esecuzione.

Quando viene eseguito il programma, Ŕ possibile utilizzare i metodi della classe Debug per produrre messaggi che consentono di monitorare, per rilevare malfunzionamenti, o per fornire informazioni di misurazione delle prestazioni. Per impostazione predefinita, i messaggi che genera la classe Debug vengono visualizzati nella finestra di Output di Microsoft Visual Studio Ambiente di sviluppo integrato (IDE).

Il codice di esempio utilizza il metodo WriteLine per produrre un messaggio seguito da una riga carattere di terminazione. Quando si utilizza questo metodo per produrre un messaggio, viene visualizzato ogni messaggio in una riga separata nella finestra di Output.

Se si utilizza il metodo Assert della classe Debug , finestra di Output viene visualizzato un messaggio solo se un determinato la condizione Ŕ false. Il messaggio viene visualizzato anche in una finestra di dialogo modale l'utente. Nella finestra di dialogo include il messaggio, il nome del progetto e il numero di istruzione di debug. Assert . Nella finestra di dialogo include inoltre il comando tre pulsanti:
  • Abort: interrompe l'applicazione in esecuzione.
  • Retry: l'applicazione viene attivata la modalitÓ di debug.
  • Ignora: viene eseguita l'applicazione.
L'utente deve fare clic su uno di questi pulsanti prima dell'applicazione pu˛ continuare.

╚ anche possibile indirizzare l'output dalla classe Debug a destinazioni diverse dalla finestra di Output. La classe Debug dispone di un insieme denominato di listener che include gli oggetti Listener . Ogni oggetto Listener controlla l'output di Debug e lo indirizza a una destinazione specificata. Ogni Listener nell'insieme Listeners ricevere qualsiasi output che genera la classe Debug . Utilizzare la classe TextWriterTraceListener per definire gli oggetti Listener . ╚ possibile specificare la destinazione per una classe TextWriterTraceListener tramite il relativo costruttore. Alcune possibili destinazioni dell'output includono:
  • La finestra di Console utilizzando la proprietÓ System.Console.Out .
  • Un file di testo (txt) utilizzando l'istruzione System.IO.File.CreateText("FileName.txt")) .
Dopo aver creato un oggetto TextWriterTraceListener , Ŕ necessario aggiungere l'oggetto all'insieme di debug per la ricezione di output di Debug .

Creare un campione con la classe Debug

  1. Utilizzare 2005 Visual Basic o Visual Basic.NET per creare un nuovo progetto applicazione Console denominato conInfo. Un modulo pubblico denominato Module1 viene aggiunto al progetto Per impostazione predefinita.
  2. Per inizializzare le variabili per contenere informazioni su un prodotto, aggiungere le seguenti istruzioni Dim :
    Dim sProdName As String = "Widget"
    Dim iUnitQty As Integer = 100
    Dim dUnitCost As Decimal = 1.03
    					
  3. Specificare il messaggio che produce la classe del primo parametro di input del metodo WriteLine . Premere la combinazione di tasti CTRL + ALT + O per garantire che il Finestra di output Ŕ visibile.
    Debug.WriteLine("Debug Information-Product Starting ")
    					
  4. Per migliorare la leggibilitÓ, utilizzare il metodo di rientro per il rientro dei messaggi successivi nella finestra di Output:
    Debug.Indent()
    					
  5. Per visualizzare il contenuto delle variabili selezionate, utilizzare il metodo WriteLine come segue:
    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. ╚ inoltre possibile utilizzare il metodo WriteLine per visualizzare lo spazio dei nomi e il nome della classe per un oggetto esistente. Ad esempio, il codice seguente visualizza lo spazio dei nomi System.Xml.XmlDocument nella finestra di Output:
    Dim oxml As New System.Xml.XmlDocument()
    Debug.WriteLine(oxml)
    					
  7. Per organizzare l'output, Ŕ possibile includere una categoria come un facoltativo, secondo parametro di input del metodo WriteLine . Se si specifica una categoria, il formato dell'Output finestra di messaggio Ŕ "categoria: messaggio." Ad esempio, la prima riga della segue il codice visualizza "campo: product name is Widget" nell'Output finestra:
    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. Nella finestra di Output pu˛ visualizzare i messaggi solo se un determinato condizione viene valutata true utilizzando il metodo WriteLineIf della classe Debug . La condizione da valutare Ŕ il primo parametro di input il metodo WriteLineIf . Il secondo parametro di WriteLineIf Ŕ il messaggio che viene visualizzata solo se la condizione nel primo parametro restituisce true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear")
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear")
    					
  9. Utilizzare il metodo Assert della classe Debug in modo che nella finestra di Output viene visualizzato il solo se messaggio un condizione specificata restituisce false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear")
    Debug.Assert(dUnitCost < 1, "Message will appear")
    					
  10. Create the TextWriterTraceListener objects for the Console window (tr1) and for a text file named Output.txt (tr2), and then add each object to the Debug Listeners collection:
    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 the Unindent method to remove the indentation for subsequent messages that the Debug class generates. When you use the Indent and the Unindent methods together, the reader can distinguish the output as group.
    Debug.Unindent()
    Debug.WriteLine("Debug Information-Product Ending")
    					
  12. To ensure that each Listener object receives all of its output, call the Flush method for the Debug class buffers:
    Debug.Flush()
    					

Using the Trace class

You can also use the Trace class to produce messages that monitor the execution of an application. The Trace and Debug classes share most of the same methods to produce output, including:
  • WriteLine
  • WriteLineIf
  • Indent
  • Unindent
  • Assert
  • Flush
You can use the Trace and the Debug classes separately or together in the same application. In a Debug Solution Configuration project, both Trace and Debug output are active. The project generates output from both of these classes to all Listener objects. However, a Release Solution Configuration project only generates output from a Trace class. The Release Solution Configuration project ignores any Debug 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. Make sure that Debug 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. Right-click conInfo, and then click Properties.
  4. In the left pane of the conInfo property page, under the Configuration folder, make sure that the arrow points to Debugging.
  5. Above the Configuration folder, in the Configuration drop-down list box, click Active (Debug) or Debug, and then click OK.
  6. Press CTRL+ALT+O to display the Output window.
  7. Press the F5 key to run the code. When the Assertion Failed dialog box appears, click 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
				

Troubleshooting

  • If the solution configuration type is Release, the Debug class output is ignored.
  • After you create a TextWriterTraceListener class for a particular target, TextWriterTraceListener receives output from the Trace and the Debug classes. This occurs regardless of whether you use the Add method of the Trace or the Debug class to add TextWriterTraceListener to the Listeners class.
  • If you add a Listener object for the same target in the Trace and the Debug classes, each line of output is duplicated, regardless of whether Debug or Trace 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)
    					

Riferimenti

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://asp.dotnetheaven.com/howto/doc/TraceDemo.aspx
or

http://quickstart.developerfusion.co.uk/quickstart/howto/doc/TraceDemo.aspx

ProprietÓ

Identificativo articolo: 313417 - Ultima modifica: lunedý 7 maggio 2012 - Revisione: 1.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Chiavi:á
kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster kbmt KB313417 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 313417
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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