Trace Klasse

Definition

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 der Anfang und das Ende der Ausführung eines Programms angegeben. Im Beispiel werden auch die Trace.Indent Methoden und Trace.Unindent Methoden verwendet, um die Ablaufverfolgungsausgabe zu unterscheiden. Ein vollständiges Beispiel für die Verwendung von Trace" How to: Add Trace Statements to Application Code" finden Sie unter "How to: Add Trace Statements to Application Code".

// 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 Versionsversionen zu instrumentieren. Mit der Instrumentierung können Sie den Status Ihrer Anwendung überwachen, die in realen Einstellungen ausgeführt wird. Mithilfe der Ablaufverfolgung können Sie Probleme isolieren und beheben, ohne ein ausgeführtes System zu stören.

Diese Klasse bietet Methoden zum Anzeigen eines Assert Dialogfelds und zum Ausgeben einer Assertion, die immer ausgeführt Failwird. Diese Klasse stellt Schreibmethoden in den folgenden Variationen bereit:

Die BooleanSwitch und TraceSwitch Klassen bieten Mittel, um die Ablaufverfolgungsausgabe dynamisch zu steuern. In .NET Framework Apps können Sie die Werte dieser Schalter ä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: Erstellen, Initialisieren und Konfigurieren von Ablaufverfolgungsschaltern.

Sie können das Ziel der Ablaufverfolgungsausgabe anpassen, indem Sie Instanzen zu oder Entfernen von Instanzen aus der Listeners Auflistung hinzufügenTraceListener. Die Listeners Auflistung wird sowohl von den Debug Klassen als auch von den Trace Klassen freigegeben. Durch hinzufügen eines Ablaufverfolgungslisteners zu beiden Klassen wird der Listener hinzugefügt. Standardmäßig wird die Ablaufverfolgungsausgabe mithilfe der DefaultTraceListener Klasse ausgegeben.

Hinweis

Das Hinzufügen eines Ablaufverfolgungslisteners zur Listeners Auflistung kann dazu führen, dass während der 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 Thema nicht aufgezählt werden. Es kann hilfreich sein, Aufrufe an die Trace Methoden in try/catch Blöcken zu platzieren, um 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 die Berechtigung erfordert UnmanagedCode . Um teilweise vertrauenswürdigen Code zu verfolgen, der in einem Sandkasten in Visual Studio ausgeführt wird, fügen Sie keine Ablaufverfolgungslistener hinzu. Zeigen Sie stattdessen die und Debug die Trace Nachrichten im Ausgabefenster an.

Die Trace Klasse bietet Eigenschaften zum Abrufen oder Festlegen der Indent Ebene und des IndentSize, und ob AutoFlush nach jedem Schreibvorgang.

In .NET Framework Apps können Sie die AutoFlush Konfigurationsdatei, die dem Namen Ihrer Anwendung entspricht, festlegen und IndentSize bearbeitenTrace. 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 Trace. Compiler, die Aufrufe dieser Methoden unterstützen ConditionalAttribute , werden nur TRACE dann als Symbol für die bedingte Kompilierung definiert. Weitere Informationen finden Sie in der Dokumentation eines Compilers, um zu bestimmen, ob ConditionalAttribute und die Syntax zum Definieren eines Symbols für die bedingte Kompilierung unterstützt wird.

Hinweis

In Visual Studio 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.

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 oben in der Datei hinzufügen #define TRACE . Fügen Sie in Visual Basic die /d:TRACE=True Option zur Compilerbefehlszeile hinzu, oder fügen Sie 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 in Trace einen #if defined(TRACE) ... #endif Block einschließen und der Compilerbefehlszeile die /DTRACE Option 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 false ist, 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.

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

Siehe auch