Freigeben über


Debug Klasse

Definition

Stellt eine Reihe von Methoden und Eigenschaften bereit, die beim Debuggen des Codes helfen.

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

// 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 Debuginformationen 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 Klassen TraceSwitch bieten Mittel, um die Ablaufverfolgungsausgabe dynamisch zu steuern. Für .NET Framework-Apps können Sie die Werte dieser Switches ändern, ohne die Anwendung neu zu kompilieren. Informationen zur Verwendung der Konfigurationsdatei zum Festlegen eines Switches in .NET Framework-Apps finden Sie in der Switch Klasse und im Artikel "Trace Switches" .

Sie können das Ziel der Ablaufverfolgungsausgabe anpassen, indem TraceListener Sie Instanzen zu instanzen oder aus der Listeners Auflistung entfernen. Die Listeners Sammlung wird sowohl von den Debug Klassen als auch von den Trace Klassen gemeinsam verwendet. 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 Ablaufverfolgungs-Listeners zur Auflistung kann dazu führen, dass während der Listeners 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 aufgelistet 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 verarbeiten.

Sie können die Einzugsebene 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 geleert 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 bearbeiten Debug . 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 , es sei denn DEBUG , sie sind als Symbol für die bedingte Kompilierung definiert. In der Dokumentation eines Compilers erfahren Sie, 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 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).For information about conditional debugging in Visual C++, see Debug class (C++/CLI).

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

Eigenschaften

Name Beschreibung
AutoFlush

Dient zum Abrufen oder Festlegen eines Werts, der Listeners angibt, ob Flush() nach jedem Schreiben aufgerufen werden soll.

IndentLevel

Dient zum Abrufen oder Festlegen der Einzugsebene.

IndentSize

Dient zum Abrufen oder Festlegen der Anzahl von Leerzeichen in einem Einzug.

Listeners

Ruft die Sammlung von Listenern ab, die die Debugausgabe überwachen.

Methoden

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

Sucht nach einer Bedingung; wenn die Bedingung lautet false, gibt eine angegebene Nachricht aus und zeigt ein Meldungsfeld an, in dem der Aufrufstapel angezeigt wird.

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

Sucht nach einer Bedingung; wenn die Bedingung lautet false, gibt eine angegebene Nachricht aus und zeigt ein Meldungsfeld an, in dem der Aufrufstapel angezeigt wird.

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

Sucht nach einer Bedingung; wenn die Bedingung lautet false, gibt zwei Nachrichten (einfach und formatiert) aus und zeigt ein Meldungsfeld an, in dem der Aufrufstapel angezeigt wird.

Assert(Boolean, String, String)

Sucht nach einer Bedingung; wenn die Bedingung lautet false, gibt zwei angegebene Nachrichten aus und zeigt ein Meldungsfeld an, in dem der Aufrufstapel angezeigt wird.

Assert(Boolean, String)

Sucht nach einer Bedingung; wenn die Bedingung lautet false, gibt eine angegebene Nachricht aus und zeigt ein Meldungsfeld an, in dem der Aufrufstapel angezeigt wird.

Assert(Boolean)

Sucht nach einer Bedingung; wenn die Bedingung lautet false, wird ein Meldungsfeld mit dem Aufrufstapel angezeigt.

Close()

Löscht den Ausgabepuffer und ruft dann die Close Methode für jedes der Listeners.

Fail(String, String)

Gibt eine Fehlermeldung und eine detaillierte Fehlermeldung aus.

Fail(String)

Gibt die angegebene Fehlermeldung aus.

Flush()

Löscht den Ausgabepuffer und bewirkt, dass gepufferte Daten in die Listeners Auflistung geschrieben werden.

Indent()

Erhöht den Aktuellen um eins IndentLevel .

Print(String, Object[])

Schreibt eine formatierte Zeichenfolge gefolgt von einem Zeilenterminator in die Ablaufverfolgungslistener in der Listeners Auflistung.

Print(String)

Schreibt eine Nachricht gefolgt von einem Zeilenterminator in die Ablaufverfolgungslistener in der Listeners Auflistung.

Unindent()

Verringert den Aktuellen IndentLevel um einen.

Write(Object, String)

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

Write(Object)

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

Write(String, String)

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

Write(String)

Schreibt eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

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

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Wenn condition ja true, schreibt ein Kategoriename und eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung.

WriteIf(Boolean, Object, String)

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

WriteIf(Boolean, Object)

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

WriteIf(Boolean, String, String)

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

WriteIf(Boolean, String)

Schreibt eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine Bedingung lautet true.

WriteLine(Object, String)

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

WriteLine(Object)

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

WriteLine(String, Object[])

Schreibt eine formatierte Nachricht gefolgt von einem Zeilenterminator in die Ablaufverfolgungslistener in der Listeners Auflistung.

WriteLine(String, String)

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

WriteLine(String)

Schreibt eine Nachricht gefolgt von einem Zeilenterminator in die Ablaufverfolgungslistener in der Listeners Auflistung.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

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

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

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

WriteLineIf(Boolean, Object, String)

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

WriteLineIf(Boolean, Object)

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

WriteLineIf(Boolean, String, String)

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

WriteLineIf(Boolean, String)

Schreibt eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine Bedingung lautet true.

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.

Weitere Informationen