Debug Classe

Definizione

Fornisce un set di metodi e proprietà che consentono di eseguire il debug del codice.

public ref class Debug abstract sealed
public ref class Debug sealed
public static class Debug
public sealed class Debug
type Debug = class
Public Class Debug
Public NotInheritable Class Debug
Ereditarietà
Debug

Esempio

Nell'esempio seguente viene Debug usato per indicare l'inizio e la fine dell'esecuzione di un programma. L'esempio usa Indent anche e Unindent per distinguere l'output di traccia.

// Specify /DDEBUG when compiling.

#using <System.dll>
using namespace System;
using namespace System::Diagnostics;

int main( void )
{
   #if defined(DEBUG)
   Debug::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
   Debug::AutoFlush = true;
   Debug::Indent();
   Debug::WriteLine( "Entering Main" );
   #endif
   Console::WriteLine( "Hello World." );
   #if defined(DEBUG)
   Debug::WriteLine( "Exiting Main" );
   Debug::Unindent();
   #endif
   return 0;
}
// Specify /d:DEBUG when compiling.

using System;
using System.Data;
using System.Diagnostics;

class Test
{
    static void Main()
    {
       Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
       Debug.AutoFlush = true;
       Debug.Indent();
       Debug.WriteLine("Entering Main");
       Console.WriteLine("Hello World.");
       Debug.WriteLine("Exiting Main");
       Debug.Unindent();
    }
}
' Specify /d:DEBUG=True when compiling.

Imports System.Data
Imports System.Diagnostics

Class Test

    Shared Sub Main()
    
        Debug.Listeners.Add(New TextWriterTraceListener(Console.Out))
        Debug.AutoFlush = True
        Debug.Indent()
        Debug.WriteLine("Entering Main")
        Console.WriteLine("Hello World.")
        Debug.WriteLine("Exiting Main")
        Debug.Unindent()
        
    End Sub
    
End Class

Commenti

Per rendere il codice più affidabile senza influire sulle prestazioni e sulle dimensioni del codice del prodotto di spedizione, usare i metodi nella Debug classe per stampare le informazioni di debug e controllare la logica con le asserzioni.

Questa classe fornisce metodi per visualizzare una Assert finestra di dialogo e generare un'asserzione che avrà sempre esito negativo. Questa classe fornisce metodi di scrittura nelle varianti seguenti:

Le BooleanSwitch classi e TraceSwitch forniscono mezzi per controllare dinamicamente l'output di traccia. Per le app .NET Framework, è possibile modificare i valori di queste opzioni senza ricompilare l'applicazione. Per informazioni sull'uso del file di configurazione per impostare un'opzione nelle app .NET Framework, vedere la Switch classe e l'articolo Opzioni di traccia .

È possibile personalizzare la destinazione dell'output di traccia aggiungendo TraceListener o rimuovendo istanze dalla Listeners raccolta. La raccolta viene condivisa sia dalle classi che DebugTrace dalle classi. L'aggiunta Listeners di un listener di traccia a entrambe le classi aggiunge il listener a entrambi. Per impostazione predefinita, la classe genera l'output DefaultTraceListener di traccia.

Nota

L'aggiunta di un listener di traccia alla Listeners raccolta può causare la generazione di un'eccezione durante la traccia, se una risorsa usata dal listener di traccia non è disponibile. Le condizioni e l'eccezione generata dipendono dal listener di traccia e non possono essere enumerate in questo articolo. Può essere utile inserire chiamate ai Debug metodi in try/catch blocchi per rilevare e gestire eventuali eccezioni dai listener di traccia.

È possibile modificare il livello di rientro usando il Indent metodo o la IndentLevel proprietà . Per modificare la spaziatura del rientro, utilizzare la IndentSize proprietà . È possibile specificare se scaricare automaticamente il buffer di output dopo ogni scrittura impostando la AutoFlush proprietà su true.

Per le app .NET Framework, è possibile impostare AutoFlush e IndentSize per Debug modificando il file di configurazione dell'app. Il file di configurazione deve essere formattato come illustrato nell'esempio seguente.

<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="7" />
  </system.diagnostics>
</configuration>

L'attributo ConditionalAttribute viene applicato ai metodi di Debug. I compilatori che supportano ignorano ConditionalAttribute le chiamate a questi metodi, a meno che non DEBUG sia definito come simbolo di compilazione condizionale. Fare riferimento alla documentazione di un compilatore per determinare se ConditionalAttribute è supportato e la sintassi per la definizione di un simbolo di compilazione condizionale.

Nota

Nei progetti Visual Studio C# e Visual Basic, per impostazione predefinita, il DEBUG simbolo di compilazione condizionale viene definito per le compilazioni di debug e il TRACE simbolo è definito sia per le compilazioni di debug che per le build di versione. Per informazioni sul debug condizionale in Visual C++, vedere Classe debug (C++/CLI) .

Per definire il DEBUG simbolo di compilazione condizionale in C#, aggiungere l'opzione /d:DEBUG alla riga di comando del compilatore quando si compila il codice usando una riga di comando o aggiungere #define DEBUG all'inizio del file. In Visual Basic aggiungere l'opzione /d:DEBUG=True alla riga di comando del compilatore o aggiungere #Const DEBUG=True al file.

Proprietà

AutoFlush

Ottiene o imposta un valore che indica se chiamare il metodo Flush() sulla proprietà Listeners dopo ogni operazione di scrittura.

IndentLevel

Ottiene o imposta il livello di rientro.

IndentSize

Ottiene o imposta il numero di spazi in un rientro.

Listeners

Ottiene l'insieme di listener che esegue il monitoraggio dell'output di debug.

Metodi

Assert(Boolean)

Controlla una condizione. Se la condizione è false, viene visualizzata una finestra di messaggio contenente lo stack di chiamate.

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

Controlla una condizione. Se la condizione è false, genera un messaggio specificato e visualizza una finestra di messaggio contenente lo stack di chiamate.

Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler)

Controlla una condizione. Se la condizione è false, genera un messaggio specificato e visualizza una finestra di messaggio contenente lo stack di chiamate.

Assert(Boolean, String)

Controlla una condizione. Se la condizione è false, genera un messaggio specificato e visualizza una finestra di messaggio contenente lo stack di chiamate.

Assert(Boolean, String, String)

Controlla una condizione. Se la condizione è false, vengono generati due messaggi specificati e viene visualizzata una finestra di messaggio contenente lo stack di chiamate.

Assert(Boolean, String, String, Object[])

Controlla una condizione. Se la condizione è false, vengono generati due messaggi (semplice e formattato) e viene visualizzata una finestra di messaggio contenente lo stack di chiamate.

Close()

Svuota il buffer dell'output e quindi chiama il metodo Close per ogni Listeners.

Fail(String)

Genera il messaggio di errore specificato.

Fail(String, String)

Genera un messaggio di errore e un messaggio di errore dettagliato.

Flush()

Svuota il buffer di output e determina la scrittura dei dati del buffer nella raccolta Listeners.

Indent()

Incrementa la proprietà IndentLevel corrente di uno.

Print(String)

Scrive un messaggio seguito da un terminatore di riga nei listener di traccia nell'insieme Listeners.

Print(String, Object[])

Scrive una stringa formattata seguita da un terminatore di riga nei listener di traccia dell'insieme Listeners.

Unindent()

Riduce l'oggetto IndentLevel corrente di uno.

Write(Object)

Scrive il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners.

Write(Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners.

Write(String)

Scrive un messaggio nei listener di traccia della raccolta Listeners.

Write(String, String)

Scrive un nome di categoria e un messaggio nei listener di traccia della raccolta Listeners.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Se condition è true, scrive un nome di categoria e un messaggio nei listener di traccia nella Listeners raccolta.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Scrive un nome di categoria e un messaggio nei listener di traccia nella Listeners raccolta se una condizione specificata è true.

WriteIf(Boolean, Object)

Scrive il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners se una condizione è true.

WriteIf(Boolean, Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners se una condizione è true.

WriteIf(Boolean, String)

Scrive un messaggio ai listener di traccia della raccolta Listeners se una condizione è true.

WriteIf(Boolean, String, String)

Scrive un nome di categoria e un messaggio nei listener di traccia della raccolta Listeners se una condizione è true.

WriteLine(Object)

Scrive il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners.

WriteLine(Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners.

WriteLine(String)

Scrive un messaggio seguito da un terminatore di riga nei listener di traccia nell'insieme Listeners.

WriteLine(String, Object[])

Scrive un messaggio formattato seguito da un terminatore di riga nei listener di traccia nell'insieme Listeners.

WriteLine(String, String)

Scrive un nome di categoria e un messaggio nei listener di traccia della raccolta Listeners.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Scrive un messaggio nei listener di traccia nella Listeners raccolta se una condizione specificata è true.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Scrive un nome di categoria e un messaggio nei listener di traccia nella Listeners raccolta se una condizione specificata è true.

WriteLineIf(Boolean, Object)

Scrive il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners se una condizione è true.

WriteLineIf(Boolean, Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nei listener di traccia nella raccolta Listeners se una condizione è true.

WriteLineIf(Boolean, String)

Scrive un messaggio ai listener di traccia della raccolta Listeners se una condizione è true.

WriteLineIf(Boolean, String, String)

Scrive un nome di categoria e un messaggio nei listener di traccia della raccolta Listeners se una condizione è true.

Si applica a

Thread safety

Questo tipo è thread-safe.

Vedi anche