Debug Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
| Assert(Boolean, Debug+AssertInterpolatedStringHandler) |
Sucht nach einer Bedingung; wenn die Bedingung lautet |
| Assert(Boolean, String, String, Object[]) |
Sucht nach einer Bedingung; wenn die Bedingung lautet |
| Assert(Boolean, String, String) |
Sucht nach einer Bedingung; wenn die Bedingung lautet |
| Assert(Boolean, String) |
Sucht nach einer Bedingung; wenn die Bedingung lautet |
| Assert(Boolean) |
Sucht nach einer Bedingung; wenn die Bedingung lautet |
| Close() |
Löscht den Ausgabepuffer und ruft dann die |
| 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 |
| WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler) |
Wenn |
| 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 |
| WriteIf(Boolean, Object) |
Schreibt den Wert der Methode des Objekts ToString() in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine Bedingung lautet |
| WriteIf(Boolean, String, String) |
Schreibt einen Kategorienamen und eine Nachricht in die Listener der Ablaufverfolgung in der Listeners Auflistung, wenn eine Bedingung lautet |
| WriteIf(Boolean, String) |
Schreibt eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine Bedingung lautet |
| 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 |
| WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler) |
Schreibt eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine angegebene Bedingung ist |
| 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 |
| WriteLineIf(Boolean, Object) |
Schreibt den Wert der Methode des Objekts ToString() in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine Bedingung lautet |
| WriteLineIf(Boolean, String, String) |
Schreibt einen Kategorienamen und eine Nachricht in die Listener der Ablaufverfolgung in der Listeners Auflistung, wenn eine Bedingung lautet |
| WriteLineIf(Boolean, String) |
Schreibt eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine Bedingung lautet |
Gilt für:
Threadsicherheit
Dieser Typ ist threadsicher.