Debug Класс

Определение

Предоставляет набор методов и свойств, помогающих при отладке кода.

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
Наследование
Debug

Примеры

В следующем примере показано Debug начало и конец выполнения программы. В этом примере также используется Indent и Unindent для различения выходных данных трассировки.

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

Комментарии

Чтобы сделать код более надежным, не влияя на производительность и размер кода продукта доставки, используйте методы в Debug классе для печати сведений об отладке и проверки логики с помощью утверждений.

Этот класс предоставляет методы для отображения диалогового Assert окна и выдачи утверждения, которое всегда завершается ошибкой. Этот класс предоставляет методы записи в следующих вариантах:

Классы BooleanSwitch предоставляют TraceSwitch средства динамического управления выходными данными трассировки. Для платформа .NET Framework приложений можно изменять значения этих коммутаторов без повторной компиляции приложения. Сведения об использовании файла конфигурации для задания переключателя в платформа .NET Framework приложениях смSwitch. в статье о классе и параметрах трассировки.

Вы можете настроить целевой объект трассировки, добавив TraceListener экземпляры в коллекцию или удалив их из Listeners коллекции. Коллекция совместно используется как классами, так Debug и Trace классами. Добавление Listeners прослушивателя трассировки в любой класс добавляет прослушиватель в оба класса. По умолчанию DefaultTraceListener класс выдает выходные данные трассировки.

Примечание

Добавление прослушивателя трассировки в Listeners коллекцию может привести к возникновению исключения во время трассировки, если ресурс, используемый прослушивателем трассировки, недоступен. Условия и исключение, создаваемые, зависят от прослушивателя трассировки и не могут быть перечислены в этой статье. Может быть полезно разместить вызовы Debug методов в try/catch блоках для обнаружения и обработки исключений из прослушивателей трассировки.

Уровень отступа можно изменить с помощью Indent метода или IndentLevel свойства. Чтобы изменить интервал отступа, используйте IndentSize свойство. Можно указать, следует ли автоматически очищать выходной буфер после каждой AutoFlush записи, задав для свойства значение true.

Для платформа .NET Framework приложений можно задать AutoFlush и IndentSize для Debug этого, изменив файл конфигурации приложения. Файл конфигурации должен быть отформатирован, как показано в следующем примере.

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

Атрибут ConditionalAttribute применяется к методам Debug. Компиляторы, поддерживающие ConditionalAttribute игнорировать вызовы этих методов, если DEBUG не определены как символ условной компиляции. Сведения о поддержке и синтаксисе определения символа условной компиляции см. в документации ConditionalAttribute компилятора.

Примечание

В проектах Visual Studio C# и Visual Basic по умолчанию DEBUG символ условной компиляции определяется для отладочных сборок, а TRACE символ определяется как для сборок отладки, так и для сборок выпуска. Сведения об условной отладке в Visual C++см. в разделе "Класс отладки " (C++/CLI)".

Чтобы определить символ условной DEBUG компиляции в C#, добавьте /d:DEBUG параметр в командную строку компилятора при компиляции кода с помощью командной строки или добавьте #define DEBUG в начало файла. В Visual Basic добавьте /d:DEBUG=True параметр в командную строку компилятора или добавьте #Const DEBUG=True в файл.

Свойства

AutoFlush

Получает или задает значение, определяющее необходимость вызова метода Flush() для свойства Listeners после каждой записи.

IndentLevel

Возвращает или задает уровень отступа.

IndentSize

Возвращает или задает число пробелов в отступе.

Listeners

Получает коллекцию слушателей, отслеживающих данные отладки.

Методы

Assert(Boolean)

Проверяет условие. Если условие имеет значение false, отображается окно сообщения со стеком вызовов.

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

Проверяет условие. Если условие имеет значение false, выдается указанное сообщение и отображается окно сообщения со стеком вызовов.

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

Проверяет условие. Если условие имеет значение false, выдается указанное сообщение и отображается окно сообщения со стеком вызовов.

Assert(Boolean, String)

Проверяет условие. Если условие имеет значение false, выдается указанное сообщение и отображается окно сообщения со стеком вызовов.

Assert(Boolean, String, String)

Проверяет условие. Если условие имеет значение false, выдается два указанных сообщения и отображается окно сообщения со стеком вызовов.

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

Проверяет условие; если условие имеет значение false, выводит два сообщения (простое и отформатированное) и отображает окно сообщения со стеком вызовов.

Close()

Очищает выходной буфер, а затем вызывает метод Close на каждый Listeners.

Fail(String)

Выдает указанное сообщение об ошибке.

Fail(String, String)

Выдает простое и подробное сообщение об ошибке.

Flush()

Очищает выходной буфер и вызывает запись буферизованных данных в коллекцию Listeners.

Indent()

Увеличивает текущее значение IndentLevel на единицу.

Print(String)

Записывает сообщение, заканчивающееся ограничителем строки, в прослушиватели трассировки в коллекции Listeners.

Print(String, Object[])

Записывает форматированную строку, заканчивающееся ограничителем строки, в прослушиватели трассировки в коллекции Listeners.

Unindent()

Уменьшает текущее значение IndentLevel на единицу.

Write(Object)

Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners.

Write(Object, String)

Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners.

Write(String)

Записывает сообщение в прослушиватели трассировки в коллекции Listeners.

Write(String, String)

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Если condition это так true, записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции.

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции, если указано условие true.

WriteIf(Boolean, Object)

Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если условие — true.

WriteIf(Boolean, Object, String)

Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если задано условие true.

WriteIf(Boolean, String)

Записывает сообщение в прослушиватели трассировки в коллекции Listeners, если задано условие true.

WriteIf(Boolean, String, String)

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners, если условие равно true.

WriteLine(Object)

Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners.

WriteLine(Object, String)

Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners.

WriteLine(String)

Записывает сообщение, заканчивающееся ограничителем строки, в прослушиватели трассировки в коллекции Listeners.

WriteLine(String, Object[])

Записывает форматированное сообщение, заканчивающееся ограничителем строки, в прослушиватели трассировки в коллекции Listeners.

WriteLine(String, String)

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

Записывает сообщение в прослушиватели трассировки в Listeners коллекции, если указано условие true.

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

Записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции, если указано условие true.

WriteLineIf(Boolean, Object)

Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если условие — true.

WriteLineIf(Boolean, Object, String)

Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если задано условие true.

WriteLineIf(Boolean, String)

Записывает сообщение в прослушиватели трассировки в коллекции Listeners, если задано условие true.

WriteLineIf(Boolean, String, String)

Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners, если условие равно true.

Применяется к

Потокобезопасность

Данный тип потокобезопасен.

См. также раздел