Udostępnij za pośrednictwem


Debug Klasa

Definicja

Udostępnia zestaw metod i właściwości pomagających w debugowaniu kodu.

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
Dziedziczenie
Debug

Przykłady

W poniższym przykładzie użyto Debug metody , aby wskazać początek i koniec wykonywania programu. W przykładzie użyto również wartości Indent i Unindent w celu odróżnienia danych wyjściowych śledzenia.

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

Uwagi

Aby kod był bardziej niezawodny bez wpływu na wydajność i rozmiar kodu produktu wysyłkowego, użyj metod w Debug klasie do drukowania informacji debugowania i sprawdzania logiki przy użyciu asercji.

Ta klasa udostępnia metody wyświetlania okna dialogowego Assert i emitowania asercji, która zawsze zakończy się niepowodzeniem. Ta klasa udostępnia metody zapisu w następujących odmianach:

Klasy BooleanSwitch i TraceSwitch zapewniają środki dynamicznego sterowania danymi wyjściowymi śledzenia. W przypadku .NET Framework aplikacji można modyfikować wartości tych przełączników bez ponownego komplikowania aplikacji. Aby uzyskać informacje na temat używania pliku konfiguracji do ustawiania przełącznika w aplikacjach .NET Framework, zobacz klasę Switch i artykuł Trace Switchs (Przełączniki śledzenia).

Element docelowy danych wyjściowych śledzenia można dostosować, dodając TraceListener wystąpienia do kolekcji lub usuwając je z kolekcji Listeners . Kolekcja Listeners jest udostępniana zarówno Debug przez klasy , jak i Trace . Dodanie odbiornika śledzenia do jednej z klas dodaje odbiornik do obu tych klas. Domyślnie DefaultTraceListener klasa emituje dane wyjściowe śledzenia.

Uwaga

Dodanie odbiornika śledzenia do Listeners kolekcji może spowodować zgłoszenie wyjątku podczas śledzenia, jeśli zasób używany przez odbiornik śledzenia jest niedostępny. Warunki i zgłoszony wyjątek zależą od odbiornika śledzenia i nie można go wyliczyć w tym artykule. Przydatne może być umieszczenie wywołań Debug metod w blokach w try/catch celu wykrywania i obsługi wyjątków od odbiorników śledzenia.

Poziom wcięcia można zmodyfikować przy użyciu Indent metody lub IndentLevel właściwości . Aby zmodyfikować odstępy między wcięciami, użyj IndentSize właściwości . Można określić, czy automatycznie opróżnić bufor wyjściowy po każdym zapisie, ustawiając AutoFlush właściwość na true.

W przypadku .NET Framework aplikacji można ustawić AutoFlush elementy i IndentSize , Debug edytując plik konfiguracji aplikacji. Plik konfiguracji powinien być sformatowany, jak pokazano w poniższym przykładzie.

<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="7" />
  </system.diagnostics>
</configuration>

Atrybut ConditionalAttribute jest stosowany do metod .Debug Kompilatory, które obsługują ConditionalAttribute ignorowanie wywołań tych metod, chyba że DEBUG jest zdefiniowany jako symbol kompilacji warunkowej. Zapoznaj się z dokumentacją kompilatora, aby określić, czy ConditionalAttribute jest obsługiwana, oraz składnia definiowania symbolu kompilacji warunkowej.

Uwaga

W projektach Visual Studio C# i Visual Basic domyślnie DEBUG symbol kompilacji warunkowej jest definiowany dla kompilacji debugowania, a TRACE symbol jest definiowany zarówno dla kompilacji debugowania, jak i kompilacji wydania. Aby uzyskać informacje na temat debugowania warunkowego w języku Visual C++, zobacz Klasa debugowania (C++/CLI).

Aby zdefiniować DEBUG symbol kompilacji warunkowej w języku C#, dodaj /d:DEBUG opcję do wiersza polecenia kompilatora podczas kompilowania kodu przy użyciu wiersza polecenia lub dodaj #define DEBUG go na początku pliku. W języku Visual Basic dodaj /d:DEBUG=True opcję do wiersza polecenia kompilatora lub dodaj #Const DEBUG=True do pliku .

Właściwości

AutoFlush

Pobiera lub ustawia wartość wskazującą, czy Flush() należy wywołać element Listeners po każdym zapisie.

IndentLevel

Pobiera lub ustawia poziom wcięcia.

IndentSize

Pobiera lub ustawia liczbę spacji w wcięcie.

Listeners

Pobiera kolekcję odbiorników monitorujących dane wyjściowe debugowania.

Metody

Assert(Boolean)

Sprawdza warunek; Jeśli warunek to false, wyświetla okno komunikatu, które pokazuje stos wywołań.

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

Sprawdza warunek; Jeśli warunek to false, zwraca określony komunikat i wyświetla okno komunikatu, które pokazuje stos wywołań.

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

Sprawdza warunek; Jeśli warunek to false, zwraca określony komunikat i wyświetla okno komunikatu, które pokazuje stos wywołań.

Assert(Boolean, String)

Sprawdza warunek; Jeśli warunek to false, zwraca określony komunikat i wyświetla okno komunikatu, które pokazuje stos wywołań.

Assert(Boolean, String, String)

Sprawdza warunek; Jeśli warunek to false, zwraca dwa określone komunikaty i wyświetla okno komunikatu, które pokazuje stos wywołań.

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

Sprawdza warunek; Jeśli warunek ma falsewartość , zwraca dwa komunikaty (proste i sformatowane) i wyświetla okno komunikatu, które pokazuje stos wywołań.

Close()

Opróżnia bufor wyjściowy, a następnie wywołuje metodę Close dla każdego z obiektów Listeners.

Fail(String)

Emituje określony komunikat o błędzie.

Fail(String, String)

Emituje komunikat o błędzie i szczegółowy komunikat o błędzie.

Flush()

Opróżnia bufor wyjściowy i powoduje buforowane dane do zapisu w kolekcji Listeners .

Indent()

Zwiększa prąd IndentLevel o jeden.

Print(String)

Zapisuje komunikat, po którym następuje terminator wiersza do odbiorników śledzenia w kolekcji Listeners .

Print(String, Object[])

Zapisuje sformatowany ciąg, po którym następuje terminator wierszy do odbiorników śledzenia w Listeners kolekcji.

Unindent()

Zmniejsza prąd IndentLevel o jeden.

Write(Object)

Zapisuje wartość metody obiektu ToString() w odbiornikach śledzenia w kolekcji Listeners .

Write(Object, String)

Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji.

Write(String)

Zapisuje komunikat do odbiorników śledzenia w kolekcji Listeners .

Write(String, String)

Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w kolekcji Listeners .

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Jeśli condition ma truewartość , zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w kolekcji Listeners .

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli określony warunek to true.

WriteIf(Boolean, Object)

Zapisuje wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteIf(Boolean, Object, String)

Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteIf(Boolean, String)

Zapisuje komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteIf(Boolean, String, String)

Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteLine(Object)

Zapisuje wartość metody obiektu ToString() w odbiornikach śledzenia w kolekcji Listeners .

WriteLine(Object, String)

Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji.

WriteLine(String)

Zapisuje komunikat, po którym następuje terminator wiersza do odbiorników śledzenia w kolekcji Listeners .

WriteLine(String, Object[])

Zapisuje sformatowany komunikat, po którym następuje terminator wierszy do odbiorników śledzenia w Listeners kolekcji.

WriteLine(String, String)

Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w kolekcji Listeners .

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Zapisuje komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli określony warunek to true.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli określony warunek to true.

WriteLineIf(Boolean, Object)

Zapisuje wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteLineIf(Boolean, Object, String)

Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteLineIf(Boolean, String)

Zapisuje komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

WriteLineIf(Boolean, String, String)

Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to true.

Dotyczy

Bezpieczeństwo wątkowe

Ten typ jest bezpieczny wątkowo.

Zobacz też