Condividi tramite


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 /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 in modo dinamico 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 commutatore 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 Listeners raccolta è condivisa sia dalle classi che dalle TraceDebug classi. L'aggiunta di un listener di traccia a una delle due classi aggiunge il listener a entrambi. Per impostazione predefinita, la DefaultTraceListener classe genera l'output di traccia.

Annotazioni

L'aggiunta di un listener di traccia alla raccolta può causare la generazione di un'eccezione durante la Listeners traccia, se non è disponibile una risorsa usata dal listener di traccia. 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 e AutoFlushIndentSize 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.

Annotazioni

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à

Nome Descrizione
AutoFlush

Ottiene o imposta un valore che indica se Flush() deve essere chiamato su Listeners dopo ogni scrittura.

IndentLevel

Ottiene o imposta il livello di rientro.

IndentSize

Ottiene o imposta il numero di spazi in un rientro.

Listeners

Ottiene la raccolta di listener che monitora l'output di debug.

Metodi

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

Verifica la presenza di una condizione; se la condizione è false, restituisce un messaggio specificato e visualizza una finestra di messaggio che mostra lo stack di chiamate.

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

Verifica la presenza di una condizione; se la condizione è false, restituisce un messaggio specificato e visualizza una finestra di messaggio che mostra lo stack di chiamate.

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

Verifica la presenza di una condizione; se la condizione è false, restituisce due messaggi (semplici e formattati) e visualizza una finestra di messaggio che mostra lo stack di chiamate.

Assert(Boolean, String, String)

Verifica la presenza di una condizione; se la condizione è false, restituisce due messaggi specificati e visualizza una finestra di messaggio che mostra lo stack di chiamate.

Assert(Boolean, String)

Verifica la presenza di una condizione; se la condizione è false, restituisce un messaggio specificato e visualizza una finestra di messaggio che mostra lo stack di chiamate.

Assert(Boolean)

Verifica la presenza di una condizione; se la condizione è false, visualizza una finestra di messaggio che mostra lo stack di chiamate.

Close()

Scarica il buffer di output e quindi chiama il Close metodo su ognuno di Listeners.

Fail(String, String)

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

Fail(String)

Genera il messaggio di errore specificato.

Flush()

Scarica il buffer di output e fa sì che i dati memorizzati nel buffer vengano scritti nella Listeners raccolta.

Indent()

Aumenta l'oggetto corrente IndentLevel di uno.

Print(String, Object[])

Scrive una stringa formattata seguita da un terminatore di riga nei listener di traccia nella Listeners raccolta.

Print(String)

Scrive un messaggio seguito da un terminatore di riga nei listener di traccia nella Listeners raccolta.

Unindent()

Riduce l'oggetto corrente IndentLevel di uno.

Write(Object, String)

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

Write(Object)

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

Write(String, String)

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

Write(String)

Scrive 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, Debug+WriteIfInterpolatedStringHandler)

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

WriteIf(Boolean, Object, String)

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

WriteIf(Boolean, Object)

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

WriteIf(Boolean, String, String)

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

WriteIf(Boolean, String)

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

WriteLine(Object, String)

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

WriteLine(Object)

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

WriteLine(String, Object[])

Scrive un messaggio formattato seguito da un terminatore di riga nei listener di traccia nella Listeners raccolta.

WriteLine(String, String)

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

WriteLine(String)

Scrive un messaggio seguito da un terminatore di riga nei listener di traccia nella Listeners raccolta.

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, Debug+WriteIfInterpolatedStringHandler)

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

WriteLineIf(Boolean, Object, String)

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

WriteLineIf(Boolean, Object)

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

WriteLineIf(Boolean, String, String)

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

WriteLineIf(Boolean, String)

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

Si applica a

Thread safety

Questo tipo è thread-safe.

Vedi anche