Debug Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 |
Assert(Boolean, Debug+AssertInterpolatedStringHandler) |
Sprawdza warunek; Jeśli warunek to |
Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler) |
Sprawdza warunek; Jeśli warunek to |
Assert(Boolean, String) |
Sprawdza warunek; Jeśli warunek to |
Assert(Boolean, String, String) |
Sprawdza warunek; Jeśli warunek to |
Assert(Boolean, String, String, Object[]) |
Sprawdza warunek; Jeśli warunek ma |
Close() |
Opróżnia bufor wyjściowy, a następnie wywołuje metodę |
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 |
WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli określony warunek to |
WriteIf(Boolean, Object) |
Zapisuje wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
WriteIf(Boolean, Object, String) |
Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
WriteIf(Boolean, String) |
Zapisuje komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
WriteIf(Boolean, String, String) |
Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
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 |
WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli określony warunek to |
WriteLineIf(Boolean, Object) |
Zapisuje wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
WriteLineIf(Boolean, Object, String) |
Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
WriteLineIf(Boolean, String) |
Zapisuje komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
WriteLineIf(Boolean, String, String) |
Zapisuje nazwę kategorii i komunikat do odbiorników śledzenia w Listeners kolekcji, jeśli warunek to |
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny wątkowo.