Freigeben über


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 verwendet Debug , um den Anfang und das Ende der Ausführung eines Programms anzugeben. Im Beispiel wird auch und Unindent verwendetIndent, um die Ablaufverfolgungsausgabe zu unterscheiden.

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

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

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

Die BooleanSwitch Klassen und TraceSwitch bieten Mittel zur dynamischen Steuerung der Ablaufverfolgungsausgabe. Für .NET Framework-Apps können Sie die Werte dieser Switches ä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 Ablaufverfolgungsswitches.

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

Hinweis

Das Hinzufügen eines Ablaufverfolgungslisteners zur Auflistung kann dazu führen, dass während der Listeners Ablaufverfolgung eine Ausnahme ausgelöst wird, wenn eine vom Ablaufverfolgungslistener verwendete Ressource 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 der 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 mit der Indent -Methode oder der IndentLevel -Eigenschaft ändern. Verwenden Sie die -Eigenschaft, um den IndentSize Einzugsabstand zu ändern. Sie können angeben, ob der Ausgabepuffer nach jedem Schreibvorgang automatisch geleert werden soll, indem Sie die AutoFlush -Eigenschaft auf truefestlegen.

Für .NET Framework Apps können Sie und IndentSize für Debug festlegen, indem Sie die AutoFlush Konfigurationsdatei Ihrer App bearbeiten. 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 Debugangewendet. Compiler, die diese Methoden unterstützen ConditionalAttribute , ignorieren Aufrufe dieser Methoden, es sei denn DEBUG , sie sind als Symbol für die bedingte Kompilierung definiert. Lesen Sie die Dokumentation eines Compilers, um zu ermitteln, ob ConditionalAttribute unterstützt wird, und die Syntax zum Definieren eines Symbols für die bedingte Kompilierung.

Hinweis

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

Um das Symbol für die DEBUG bedingte Kompilierung in C# zu definieren, fügen Sie die /d:DEBUG Option der Compilerbefehlszeile hinzu, wenn Sie Ihren Code über eine Befehlszeile kompilieren, oder fügen Sie am Anfang der Datei hinzu #define DEBUG . Fügen Sie in Visual Basic die /d:DEBUG=True Option der Compilerbefehlszeile hinzu, oder fügen 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 ist 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 ist 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.

Weitere Informationen