Trace 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 für das Verfolgen der Ausführung von Code bereit. Diese Klasse kann nicht vererbt werden.
public ref class Trace sealed
public sealed class Trace
type Trace = class
Public NotInheritable Class Trace
- Vererbung
-
Trace
Beispiele
Im folgenden Beispiel wird Trace verwendet, um den Anfang und das Ende der Ausführung eines Programms anzugeben. Im Beispiel werden auch die Trace.Indent Methoden und Trace.Unindent verwendet, um die Ablaufverfolgungsausgabe zu unterscheiden. Ein vollständiges Beispiel für die Verwendung von finden Sie unter Vorgehensweise: Hinzufügen vonTrace Ablaufverfolgungsanweisungen zum Anwendungscode.
// Specify /DTRACE when compiling.
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
int main()
{
#if defined(TRACE)
Trace::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
Trace::AutoFlush = true;
Trace::Indent();
Trace::WriteLine( "Entering Main" );
#endif
Console::WriteLine( "Hello World." );
#if defined(TRACE)
Trace::WriteLine( "Exiting Main" );
Trace::Unindent();
#endif
return 0;
}
// Specify /d:TRACE when compiling.
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.AutoFlush = true;
Trace.Indent();
Trace.WriteLine("Entering Main");
Console.WriteLine("Hello World.");
Trace.WriteLine("Exiting Main");
Trace.Unindent();
}
}
' Specify /d:TRACE=True when compiling.
Imports System.Diagnostics
Class Test
Shared Sub Main()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
Trace.AutoFlush = True
Trace.Indent()
Trace.WriteLine("Entering Main")
Console.WriteLine("Hello World.")
Trace.WriteLine("Exiting Main")
Trace.Unindent()
End Sub
End Class
Hinweise
Sie können die Eigenschaften und Methoden in der Trace -Klasse verwenden, um Releasebuilds zu instrumentieren. Mit der Instrumentierung können Sie die Integrität Ihrer Anwendung überwachen, die in realen Einstellungen ausgeführt wird. Die Ablaufverfolgung hilft Ihnen, Probleme zu isolieren und zu beheben, ohne ein ausgeführtes System zu stören.
Diese Klasse stellt Methoden zum Anzeigen eines Dialogfelds Assert und zum Ausgeben einer Assertion bereit, die immer Failerfolgt. Diese Klasse stellt Schreibmethoden in den folgenden Variationen bereit:
Die BooleanSwitch Klassen und TraceSwitch bieten Mittel zum dynamischen Steuern der Ablaufverfolgungsausgabe. In .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 einer .NET Framework-App finden Sie in der Switch Klasse und Vorgehensweise: Create, Initialisieren und Konfigurieren von 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 wird die Ablaufverfolgungsausgabe mithilfe der DefaultTraceListener -Klasse ausgegeben.
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 Thema nicht aufgezählt werden. Es kann nützlich sein, Aufrufe der Trace Methoden in try
/catch
Blöcken zu platzieren, um alle Ausnahmen von Ablaufverfolgungslistenern zu erkennen und zu behandeln.
Hinweis
Wenn Sie Ablaufverfolgungslistener zu teilweise vertrauenswürdigem Code hinzufügen, erhalten Sie eine SecurityException Ausnahme, da das Hinzufügen von Ablaufverfolgungslistenern berechtigungen erfordert UnmanagedCode . Um teilweise vertrauenswürdigen Code nachzuverfolgen, der in einer Sandbox in Visual Studio ausgeführt wird, fügen Sie keine Ablaufverfolgungslistener hinzu. Zeigen Sie stattdessen die Trace Nachrichten und Debug im Ausgabefenster an.
Die Trace -Klasse bietet Eigenschaften zum Abrufen oder Festlegen der Ebene von Indent und des IndentSizeund AutoFlush nach jedem Schreibvorgang.
In .NET Framework-Apps können Sie und AutoFlushIndentSize für Trace festlegen, indem Sie die Konfigurationsdatei bearbeiten, die dem Namen Ihrer Anwendung entspricht. Die Konfigurationsdatei sollte wie im folgenden Beispiel formatiert werden:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="3" />
</system.diagnostics>
</configuration>
Das ConditionalAttribute -Attribut wird auf die Methoden von Traceangewendet. Compiler, die Aufrufe dieser Methoden unterstützen ConditionalAttribute , ignorieren, es sei denn TRACE
, 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-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.
Um das Symbol für die TRACE
bedingte Kompilierung in C# zu definieren, fügen Sie die /d:TRACE
Option zur Compilerbefehlszeile hinzu, wenn Sie Ihren Code mithilfe einer Befehlszeile kompilieren, oder fügen Sie am Anfang der Datei hinzu #define TRACE
. Fügen Sie in Visual Basic der Compiler-Befehlszeile die /d:TRACE=True
Option hinzu, oder fügen Sie der Datei hinzu #Const TRACE=True
.
ConditionalAttribute wird vom C++-Compiler nicht unterstützt. Um gleichwertige Funktionen bereitzustellen, müssen Sie Aufrufe der Methoden von Trace in einen #if defined(TRACE) ... #endif
Block einschließen und die /DTRACE
Option der Compiler-Befehlszeile hinzufügen oder der Datei hinzufügen #define TRACE
.
Eigenschaften
AutoFlush |
Ruft die Information ab, ob Flush() nach jedem Schreibvorgang für Listeners aufgerufen werden soll, oder legt diese fest. |
CorrelationManager |
Ruft den Korrelations-Manager für den Thread für diese Ablaufverfolgung ab. |
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, durch die die Ausgabe der Ablaufverfolgung überwacht wird. |
UseGlobalLock |
Ruft einen Wert ab, der angibt, ob die globale Sperre verwendet werden soll, oder legt diesen Wert fest. |
Methoden
Assert(Boolean) |
Ü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 |
Close() |
Leert den Ausgabepuffer und schließt dann die Listeners. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
Fail(String) |
Gibt die angegebene Fehlermeldung aus. |
Fail(String, String) |
Gibt eine Fehlermeldung sowie eine detaillierte Fehlermeldung aus. |
Flush() |
Leert den Ausgabepuffer und führt dazu, dass gepufferte Daten in die Listeners geschrieben werden. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
Indent() |
Erhöht die aktuelle IndentLevel um 1. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Refresh() |
Aktualisiert die Konfigurationsdaten für die Ablaufverfolgung. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
TraceError(String) |
Schreibt eine Fehlermeldung unter Verwendung der angegebenen Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung. |
TraceError(String, Object[]) |
Schreibt eine Fehlermeldung unter Verwendung des angegebenen Arrays von Objekten und der Formatierungsinformationen in die Ablaufverfolgungslistener in der Listeners-Auflistung. |
TraceInformation(String) |
Schreibt eine Informationsmeldung unter Verwendung der angegebenen Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung. |
TraceInformation(String, Object[]) |
Schreibt eine Informationsmeldung unter Verwendung des angegebenen Arrays von Objekten und der Formatierungsinformationen in die Ablaufverfolgungslistener in der Listeners-Auflistung. |
TraceWarning(String) |
Schreibt eine Warnmeldung unter Verwendung der angegebenen Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung. |
TraceWarning(String, Object[]) |
Schreibt eine Warnmeldung unter Verwendung des angegebenen Arrays von Objekten und der Formatierungsinformationen in die Ablaufverfolgungslistener 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, 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 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, 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 |
Ereignisse
Refreshing |
Tritt auf, wenn eine TraceSource von der Konfiguration aktualisiert werden muss. |
Gilt für:
Threadsicherheit
Dieser Typ ist threadsicher.