Debug Klasse

Definition

Stellt eine Reihe von Methoden und Eigenschaften zum Debuggen von Code bereit.

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
Vererbung
Debug

Beispiele

Im folgenden Beispiel wird Debug der Anfang und das Ende der Ausführung eines Programms angegeben. Im Beispiel wird auch die Ablaufverfolgungsausgabe verwendet Indent und Unindent unterschieden.

// 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

Hinweise

Verwenden Sie Methoden in der Debug Klasse, um Ihren Code robuster zu gestalten, ohne die Leistung und die Codegröße Ihres Versandprodukts zu beeinträchtigen, um Debugginginformationen zu drucken und Ihre Logik mit Assertionen zu überprüfen.

Diese Klasse bietet Methoden zum Anzeigen eines Assert Dialogfelds und zum Ausgeben einer Assertion, die immer fehlschlägt. Diese Klasse stellt Schreibmethoden in den folgenden Variationen bereit:

Die BooleanSwitch und TraceSwitch Klassen bieten Mittel, um die Ablaufverfolgungsausgabe dynamisch zu steuern. Für .NET Framework Apps können Sie die Werte dieser Schalter ändern, ohne Ihre Anwendung neu zu kompilieren. Informationen zur Verwendung der Konfigurationsdatei zum Festlegen eines Schalters in .NET Framework Apps finden Sie in der Switch Klasse und im Artikel "Ablaufverfolgungsschalter".

Sie können das Ziel der Ablaufverfolgungsausgabe anpassen, indem Sie Instanzen zu oder Entfernen von Instanzen aus der Listeners Auflistung hinzufügenTraceListener. Die Listeners Auflistung wird sowohl von den Debug Klassen als auch von den Trace Klassen freigegeben. Durch hinzufügen eines Ablaufverfolgungslisteners zu beiden Klassen wird der Listener hinzugefügt. Standardmäßig gibt die DefaultTraceListener Klasse die Ablaufverfolgungsausgabe aus.

Hinweis

Das Hinzufügen eines Ablaufverfolgungslisteners zur Listeners Auflistung kann dazu führen, dass während der Ablaufverfolgung eine Ausnahme ausgelöst wird, wenn eine Ressource, die vom Ablaufverfolgungslistener verwendet wird, nicht verfügbar ist. Die Bedingungen und die ausgelöste Ausnahme hängen vom Ablaufverfolgungslistener ab und können in diesem Artikel nicht aufgezählt werden. Es kann hilfreich sein, Aufrufe an die Debug Methoden in try/catch Blöcken zu platzieren, um Ausnahmen von Ablaufverfolgungslistenern zu erkennen und zu behandeln.

Sie können die Ebene des Einzugs mithilfe der Indent Methode oder der IndentLevel Eigenschaft ändern. Verwenden Sie die IndentSize Eigenschaft, um den Einzugsabstand zu ändern. Sie können angeben, ob der Ausgabepuffer nach jedem Schreibvorgang automatisch gespült werden soll, indem Sie die AutoFlush Eigenschaft auf truefestlegen.

Für .NET Framework Apps können Sie die AutoFlush Konfigurationsdatei Ihrer App festlegen und IndentSize bearbeitenDebug. Die Konfigurationsdatei sollte wie im folgenden Beispiel dargestellt formatiert werden.

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

Das ConditionalAttribute Attribut wird auf die Methoden von Debug. Compiler, die Aufrufe dieser Methoden unterstützen ConditionalAttribute , werden nur DEBUG dann als Symbol für die bedingte Kompilierung definiert. Weitere Informationen finden Sie in der Dokumentation eines Compilers, um zu bestimmen, ob ConditionalAttribute und die Syntax zum Definieren eines Symbols für die bedingte Kompilierung unterstützt wird.

Hinweis

In Visual Studio C#- und Visual Basic-Projekten ist standardmäßig das Symbol für die DEBUG bedingte Kompilierung für Debugbuilds definiert, und das TRACE Symbol wird sowohl für Debug- als auch für Releasebuilds definiert. Informationen zum bedingten Debuggen in Visual C++ finden Sie unter Debugklasse (C++/CLI).

Um das Symbol für die DEBUG bedingte Kompilierung in C# zu definieren, fügen Sie die /d:DEBUG Option zur Compilerbefehlszeile hinzu, wenn Sie Ihren Code mithilfe einer Befehlszeile kompilieren oder oben in der Datei hinzufügen #define DEBUG . Fügen Sie in Visual Basic die /d:DEBUG=True Option zur Compilerbefehlszeile hinzu, oder fügen Sie sie der Datei hinzu#Const DEBUG=True.

Eigenschaften

AutoFlush

Ruft einen Wert ab, der angibt, ob für Flush() nach jedem Schreibvorgang Listeners aufgerufen werden soll, oder legt diesen fest.

IndentLevel

Ruft die Einzugsebene ab oder legt diese fest.

IndentSize

Ruft die Anzahl der Leerzeichen in einem Einzug ab oder legt diese fest.

Listeners

Ruft die Auflistung der Listener ab, die die Debugausgabe überwachen.

Methoden

Assert(Boolean)

Überprüft eine Bedingung. Wenn die Bedingung false ist, wird ein Meldungsfeld mit der Aufrufliste angezeigt.

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

Überprüft eine Bedingung. Wenn die Bedingung false ist, wird eine angegebene Meldung ausgegeben, und es wird ein Meldungsfeld mit der Aufrufliste angezeigt.

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

Überprüft eine Bedingung. Wenn die Bedingung false ist, wird eine angegebene Meldung ausgegeben, und es wird ein Meldungsfeld mit der Aufrufliste angezeigt.

Assert(Boolean, String)

Überprüft eine Bedingung. Wenn die Bedingung false ist, wird eine angegebene Meldung ausgegeben, und es wird ein Meldungsfeld mit der Aufrufliste angezeigt.

Assert(Boolean, String, String)

Überprüft eine Bedingung. Wenn die Bedingung false ist, werden zwei angegebene Meldungen ausgegeben, und es wird ein Meldungsfeld mit der Aufrufliste angezeigt.

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

Überprüft eine Bedingung. Wenn die Bedingung false ist, werden zwei angegebene Meldungen (einfach und formatiert) ausgegeben, und ein Meldungsfeld mit der Aufrufliste wird angezeigt.

Close()

Leert den Ausgabepuffer und ruft dann für jeden Listeners die Close-Methode auf.

Fail(String)

Gibt die angegebene Fehlermeldung aus.

Fail(String, String)

Gibt eine Fehlermeldung und eine detaillierte Fehlermeldung aus.

Flush()

Leert den Ausgabepuffer und bewirkt, dass gepufferte Daten in die Listeners-Auflistung geschrieben werden.

Indent()

Erhöht die aktuelle IndentLevel um 1.

Print(String)

Schreibt eine Meldung, gefolgt von einem Zeilenabschluss, in die Ablaufverfolgungsüberwachungen in der Listeners-Auflistung.

Print(String, Object[])

Schreibt eine formatierte Zeichenfolge, gefolgt von einem Zeilenabschluss, in die Ablaufverfolgungsüberwachungen in der Listeners-Auflistung.

Unindent()

Verringert die aktuelle IndentLevel um 1.

Write(Object)

Schreibt den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung.

Write(Object, String)

Schreibt einen Kategorienamen und den Wert der ToString()-Methode des Objekts in den Ablaufverfolgungslistener in der Listeners-Auflistung.

Write(String)

Schreibt eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung.

Write(String, String)

Schreibt einen Kategorienamen und eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Wenn condition ist true, schreibt einen Kategorienamen und eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Schreibt einen Kategorienamen und eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine angegebene Bedingung lautet true.

WriteIf(Boolean, Object)

Schreibt den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteIf(Boolean, Object, String)

Schreibt einen Kategorienamen und den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteIf(Boolean, String)

Schreibt eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteIf(Boolean, String, String)

Schreibt einen Kategorienamen und eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteLine(Object)

Schreibt den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung.

WriteLine(Object, String)

Schreibt einen Kategorienamen und den Wert der ToString()-Methode des Objekts in den Ablaufverfolgungslistener in der Listeners-Auflistung.

WriteLine(String)

Schreibt eine Meldung, gefolgt von einem Zeilenabschluss, in die Ablaufverfolgungsüberwachungen in der Listeners-Auflistung.

WriteLine(String, Object[])

Schreibt eine formatierte Meldung, gefolgt von einem Zeilenabschluss, in die Ablaufverfolgungslistener in der Listeners-Auflistung.

WriteLine(String, String)

Schreibt einen Kategorienamen und eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Schreibt eine Nachricht an die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine angegebene Bedingung ist true.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Schreibt einen Kategorienamen und eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine angegebene Bedingung lautet true.

WriteLineIf(Boolean, Object)

Schreibt den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteLineIf(Boolean, Object, String)

Schreibt einen Kategorienamen und den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteLineIf(Boolean, String)

Schreibt eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

WriteLineIf(Boolean, String, String)

Schreibt einen Kategorienamen und eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung true ist.

Gilt für

Threadsicherheit

Dieser Typ ist threadsicher.

Siehe auch