Al momento sei offline in attesa che la connessione Internet venga ristabilita

Modalità di analisi e debug in Visual C#

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: 815788
Per una versione di Microsoft Visual Basic .NET di questo articolo, vedere 313417 .
In questo articolo si riferisce al seguente Microsoft .NET Nomi di libreria di classi del Framework:
  • System. Diagnostics

IN QUESTA ATTIVITÀ

Sommario
In questo articolo viene descritto come utilizzare le classi Trace e Debug . Queste classi sono disponibili in Microsoft .NET Framework. È possibile utilizzare queste classi per fornire informazioni sul prestazioni di un'applicazione durante lo sviluppo di applicazioni o dopo distribuzione per la produzione. Queste classi sono solo una parte del funzionalità di strumentazione disponibili nel.NET Framework.

Torna all'inizio

Requisiti

Di seguito sono elencati i requisiti hardware consigliati, software, infrastruttura di rete e i service pack necessari:
  • Microsoft Windows 2000 o Microsoft Windows XP o Microsoft Windows Server 2003
  • Microsoft Visual C#
In questo articolo si presuppone inoltre che si abbia familiarità con il programma il debug.

Torna al parte superiore

Descrizione della tecnica


I passaggi di Creare un Esempio con la classe Debug sezione viene illustrato come creare un applicazione console che utilizza la classe Debug per fornire informazioni sull'esecuzione del programma.

Quando si esegue il programma, è possibile utilizzare i metodi della classe Debug per produrre messaggi che consentono di monitorare il programma sequenza di esecuzione, rilevamento dei malfunzionamenti o per fornire prestazioni informazioni sulla misurazione. Per impostazione predefinita, i messaggi che genera la classe Debug vengono visualizzati nella finestra di Output di Visual Studio Ambiente di sviluppo integrato (IDE).

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

Quando si utilizza il metodo Assert della classe Debug , finestra di Output viene visualizzato un messaggio solo se l'oggetto specificato condizione restituisce false. Viene inoltre visualizzato il messaggio in una finestra di dialogo modale per l'utente. Nella finestra di dialogo include il messaggio, il nome del progetto e il numero di istruzione Assert . Nella finestra di dialogo include le seguenti operazioni tre pulsanti di comando:
  • Interruzione: Arresto dell'applicazione.
  • Tentativi: L'applicazione viene attivata la modalità di debug.
  • Ignora: L'applicazione procede.
L'utente dovrà scegliere uno di questi pulsanti prima dell'applicazione può continuare.

È anche possibile indirizzare l'output della 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 l'output in una destinazione specifica.

Ogni Listener nell'insieme di Listener di 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 mediante il costruttore.

Alcune possibili output destinazioni seguenti:
  • 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 Listeners di ricevere l'output di Debug.

Torna all'inizio

Creare un campione con la classe Debug

  1. Avviare Visual Studio o Visual C# Express Edition.
  2. Creare un nuovo progetto applicazione Console in Visual C# denominato conInfo. In Visual Studio .NET viene creato Class1. Program. cs viene creato in Visual Studio 2005.
  3. Aggiungere lo spazio dei nomi seguente all'inizio di Class1 o Program. cs.
    using System.Diagnostics;
  4. Per inizializzare variabili contenenti informazioni su un prodotto, aggiungere le seguenti istruzioni di dichiarazione di metodo Main :
    string sProdName = "Widget";int iUnitQty = 100;double dUnitCost = 1.03;
  5. Specificare il messaggio che genera la classe del primo parametro di input del metodo WriteLine . Premere la combinazione di tasti CTRL + ALT + O per assicurarsi che Nella finestra di Output è visibile.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. Per migliorare la leggibilità, utilizzare il metodo di rientro per il rientro dei messaggi successivi nella finestra di Output:
    Debug.Indent();
  7. 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.ToString());Debug.WriteLine("The per unit cost is " + dUnitCost.ToString());
  8. È 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:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();Debug.WriteLine(oxml);
  9. Per organizzare l'output, è possibile includere una categoria come un facoltativo, secondo parametro del metodo WriteLine . Se si specifica una categoria, il formato dell'Output finestra di messaggio è "categoria: messaggio." Ad esempio, la prima riga del Dopo il codice visualizza "campo: il nome del prodotto è 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.ToString(),"Field");Debug.WriteLine("Total Cost is  " + (iUnitQty * dUnitCost),"Calc");
  10. La finestra di Output può visualizzare i messaggi solo se un determinata 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 viene visualizzato 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");
  11. 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 since dUnitcost < 1 is false");
  12. Creare gli oggetti TextWriterTraceListener per la finestra di Console (tr1) e un file di testo denominato Txt (tr2), quindi aggiungere ogni oggetto all'insieme dei Listener di Debug :
    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. Per migliorare la leggibilità, utilizzare il metodo Unindent per rimuovere il rientro per i successivi messaggi di Genera classe debug . Quando si utilizzano insieme metodi Riduci rientro e rientro , il lettore è in grado di distinguere l'output come gruppo.
    Debug.Unindent();Debug.WriteLine("Debug Information-Product Ending");
  14. Per assicurarsi che ogni oggetto Listener riceva tutti gli output, chiamare il metodo Flush per i buffer di classe Debug :
    Debug.Flush();
Torna all'inizio

Utilizzando la classe Trace

È anche possibile utilizzare la classe Trace per produrre messaggi destinati a controllare l'esecuzione di un applicazione. Le classi Trace e Debug condividono la maggior parte degli stessi metodi per produrre output, tra cui:
  • WriteLine
  • WriteLineIf
  • Rientro
  • Riduci rientro
  • L'asserzione
  • Svuotamento
È possibile utilizzare le classi Debug e traccia separatamente o insieme nella stessa applicazione. In un Configurazione di soluzione di progetto, sia Trace e Debug output sono attivi. Il progetto genera output da entrambi Queste classi per tutti gli oggetti Listener . Tuttavia, una configurazione di soluzione rilascio solo per i progetti Genera l'output da una classe di traccia . Il progetto ignora le chiamate di metodo di classe Debug .
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();
Torna all'inizio

Verificare che funzioni

  1. Assicurarsi che il Debug è la configurazione corrente.
  2. Se il Esplora finestra non è visibile, premere la combinazione di tasti CTRL + ALT + L per visualizzare finestra.
  3. Pulsante destro del mouse conInfo, quindi fare clic suProprietà.
  4. Nel riquadro di sinistra della pagina delle proprietà di conInfo sotto ilConfigurazione cartella, assicurarsi che la freccia rivolta versoIl debug.

    Nota. In Visual C# 2005 e in Visual C# 2005 Express Edition, fare clic su Eseguire il debug nel conInfo pagina.
  5. Di sopra del Configurazione cartella, nelConfigurazione casella di riepilogo a discesa, fare clic su Attiva (Debug) o Eseguire il debug, quindi fare clic suOK. In Visual C# 2005 e in Visual C# 2005 Express Edition, fare clic su Attiva (Debug) o Eseguire il debug nel Configurazione casella di riepilogo a discesa il Eseguire il debug pagina e quindi scegliere Salva nel File dal menu.
  6. Premere CTRL + ALT + O per visualizzare la finestra di Output.
  7. Premere F5 per eseguire il codice. Quando ilAsserzione non riuscita verrà visualizzata la finestra di dialogo, fare clic suIgnora.
  8. Nella finestra della Console, premere INVIO. Il programma deve fine e la finestra di Output verrà visualizzato un output simile al seguente
        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. Dovrebbe essere visualizzata la finestra di Console e il file di output. txt il seguente output:
    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			
Nota. Il file di output. txt si trova nella stessa directory del conInfo eseguibile (conInfo.exe). In genere, questa è la cartella \bin dove il origine del progetto viene archiviato. Per impostazione predefinita, questa è C:\Documents and Settings \Utente account di accessoDocuments\Visual studio Projects\conInfo\bin. In Visual C# 2005 e in Visual C# 2005 Express Edition, il file di output. txt si trova nella seguente cartella:
C:\Documents and Settings \Accesso utenteDocuments\Visual studio 2005\Projects\conInfo\conInfo\bin\Debug


Torna all'inizio

Il codice completo Inserzione

   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();      }			   }


Torna all'inizio

Risoluzione dei problemi

  • Se il tipo di configurazione di soluzione è la versione, il Debug sarà ignorato.
  • Dopo aver creato una classe TextWriterTraceListener per una determinata destinazione, TextWriterTraceListener riceve l'output di traccia e le classi Debug . Ciò si verifica indipendentemente dal fatto se si utilizza il metodo Add della classe Debug o la traccia per aggiungere la classe di listenerTextWriterTraceListener .
  • Se si aggiunge un oggetto listener per la stessa destinazione la traccia e le classi Debug , ogni riga di output viene duplicato, indipendentemente dal fatto che Eseguire il debug o analisi genera l'output.
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);         Debug.Listeners.Add(myWriter);                 TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);         Trace.Listeners.Add(myCreator);         
Torna al parte superiore
Riferimenti
Per ulteriori informazioni, vedere i seguenti argomenti in .NET Documentazione di libreria di classi del Framework: Torna al parte superiore

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 815788 - Ultima revisione: 03/29/2013 07:26:00 - Revisione: 6.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 KbMtit
Feedback
>