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) |
Проверяет условие. Если условие имеет значение |
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, если условие равно |
Применяется к
Потокобезопасность
Данный тип потокобезопасен.