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 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 true
festlegen.
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 |
Assert(Boolean, Debug+AssertInterpolatedStringHandler) |
Überprüft eine Bedingung. Wenn die Bedingung |
Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler) |
Überprüft eine Bedingung. Wenn die Bedingung |
Assert(Boolean, String) |
Überprüft eine Bedingung. Wenn die Bedingung |
Assert(Boolean, String, String) |
Überprüft eine Bedingung. Wenn die Bedingung |
Assert(Boolean, String, String, Object[]) |
Überprüft eine Bedingung. Wenn die Bedingung |
Close() |
Leert den Ausgabepuffer und ruft dann für jeden Listeners die |
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 |
WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Schreibt einen Kategorienamen und eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine angegebene Bedingung ist |
WriteIf(Boolean, Object) |
Schreibt den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung |
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 |
WriteIf(Boolean, String) |
Schreibt eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung |
WriteIf(Boolean, String, String) |
Schreibt einen Kategorienamen und eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung |
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 |
WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Schreibt einen Kategorienamen und eine Nachricht in die Ablaufverfolgungslistener in der Listeners Auflistung, wenn eine angegebene Bedingung ist |
WriteLineIf(Boolean, Object) |
Schreibt den Wert der ToString()-Methode des Objekts in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung |
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 |
WriteLineIf(Boolean, String) |
Schreibt eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung |
WriteLineIf(Boolean, String, String) |
Schreibt einen Kategorienamen und eine Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung, wenn eine Bedingung |
Gilt für:
Threadsicherheit
Dieser Typ ist threadsicher.