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) |
Проверяет условие. Если условие имеет значение |
Assert(Boolean, Debug+AssertInterpolatedStringHandler) |
Проверяет условие. Если условие имеет значение |
Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler) |
Проверяет условие. Если условие имеет значение |
Assert(Boolean, String) |
Проверяет условие. Если условие имеет значение |
Assert(Boolean, String, String) |
Проверяет условие. Если условие имеет значение |
Assert(Boolean, String, String, Object[]) |
Проверяет условие; если условие имеет значение |
Close() |
Очищает выходной буфер, а затем вызывает метод |
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) |
Если |
WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции, если указано условие |
WriteIf(Boolean, Object) |
Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если условие — |
WriteIf(Boolean, Object, String) |
Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если задано условие |
WriteIf(Boolean, String) |
Записывает сообщение в прослушиватели трассировки в коллекции Listeners, если задано условие |
WriteIf(Boolean, String, String) |
Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners, если условие равно |
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 коллекции, если указано условие |
WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String) |
Записывает имя категории и сообщение в прослушиватели трассировки в Listeners коллекции, если указано условие |
WriteLineIf(Boolean, Object) |
Записывает значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если условие — |
WriteLineIf(Boolean, Object, String) |
Записывает имя категории и значение метода ToString() объекта в прослушиватели трассировки в коллекции Listeners, если задано условие |
WriteLineIf(Boolean, String) |
Записывает сообщение в прослушиватели трассировки в коллекции Listeners, если задано условие |
WriteLineIf(Boolean, String, String) |
Записывает имя категории и сообщение в прослушиватели трассировки в коллекции Listeners, если условие равно |
Применяется к
Потокобезопасность
Данный тип потокобезопасен.