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 коллекции. Коллекция Listeners совместно используется как классами , Debug так и Trace классами ; добавление прослушивателя трассировки в любой класс добавляет прослушиватель к обоим классам. По умолчанию 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.

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

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

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

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