* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Применение классов Debug и Trace
8 февраля 2009

Классы Debug и Trace позволяют генерировать и записывать в журналы сообщения
со сведениями о состоянии приложения, не прерывая его исполнения. На этом за-
нятии вы научитесь применять классы Debug и Trace, добавлять слушатели трасси-
ровки (Trace Listeners) и переключатели, а также настраивать переключатели и ком-
пилированной программе.
Изучив материал этого занятия, вы сможете:
s отображать сообщения об ошибках с помощью классов Debug и Trace',
s создавать слушатели трассировки и записывать трассировочные данные
в журнал;
S создавать и применять трассировочные переключатели;
^ настраивать трассировочные переключатели через конфигурационный
файл приложения.
Продолжительность занятия - около 45 минут.
Обычно для отладки несложных приложений хватает возможностей, описанных
на предыдущем занятии, например пошагового исполнения кода, но для отладки
более сложных приложений этого мало. Большие программы состоят из сотен ты-
сяч строк кода, если такая программа дает неправильные результаты, найти логи-
ческую ошибку путем построчного просмотра кода и проверки значений перемен-
ных приложения не удастся. Класс Debug позволяет генерировать и записывать в
журнал во время выполнения сообщения с описанием состояния программы, а
класс Trace — создавать инструменты для диагностики даже скомпилированных
приложений.
Как работает трассировка
Классы Trace и Debug содержат общие (статические) методы, которые позволяют
проверять условия во время выполнения и записывать результаты в журнал. Дан-
ные, генерируемые ими, отображаются в окне Output, где их можно просматривать
при отладке, и записываются в набор Listeners. Набор Listeners содержит группу клас-
сов, получающих данные от Trace и Debug', их называют слушателями. Классы Trace
и Debug используют общий набор Listeners, предоставляя одни и те же данные всем
слушателям из этого набора. Разные виды слушателей записывают данные и тек-
стовые файлы или журналы событий. После завершения исполнения программы
трассировочные данные, записанные слушателями, анализируют, чтобы найти
ошибки в приложении. Трассировка полезна и при настройке программ (об этом
рассказывается в главе 9).
В сущности, классы Trace и Debug идентичны: они предоставляют одинаковые
наборы методов и свойств и записывают результаты в набор Listeners. Единствен-
ное различие между ними в том, что по умолчанию операторы Debug удаляются при
компиляции окончательной версии сборки, а операторы Trace там остаются По-
этому класс Debug обычно применяют для отладки на стадии разработки, a Trace ••— для
тестирования и настройки после компиляции окончательной версии приложения.
Запись данных, генерируемых классами Trace и Debug
Для записи генерируемых классами Trace и Debug данных в набор Listeners служат
методы этих классов:
• Write. Записывает строку в набор Listeners;
• WriteLine. Записывает в набор Listeners строку, завершая ее символом возврата
каретки;
• Writelf. Записывает строку в набор Listeners, если заданное булево выражение
имеет значение true',
• WriteLinelf. Записывает в набор Listeners строку, завершенную символом возвра-
та каретки, если заданное булево выражение имеет значение true',
• Assert. Записывает сообщение в набор Listeners, если заданное булево выражение
имеет значение false, и открывает окно с текстом этого сообщения;
• Fail. Создает проверку, которая автоматически завершается неудачей без про-
верки условия. При этом в набор Listeners записывается сообщение и отобража-
ется окно с текстом этого сообщения.
Следующий пример демонстрирует вызов этих методов в программе:
Visual Basic .NET
1 Все методы и свойства классов Trace и Debug являются статическими,
поэтому создавать экземпляры этих классов не требуется.
Записать строку в набор Listeners,
Trace.WriteC'Trace Message 1")
Записать в набор Listeners строку, завершающуюся символом возврата каретки.
Trace.WriteLine("Trace Message 2")
Записать строку, если заданное выражение имеет значение true,
DeDug.WriteIf(X=Y, "X equals Y")
Записать строку, завершающуюся символом возврата каретки,
если заданное выражение имеет значение true,
Debug.WriteLineIf(X=Y, "X equals Y")
Записать результат и показать сообщение,
если проверка заданного условия дала значение false.
Trace.Assert(X=Y, "X does not equal Y!")
Безусловно записать результат и показать сообщение-
Debug. Fail("Drive В is no longer valid.")
Visual C#
// Все методы и свойства классов Trace и Debug являются статическими.
// поэтому создавать экземпляры этих классов не требуется.
// Записать строку в набор Listeners.
Trace.WriteC'Trace Message 1");
// Записать в набор Listeners строку, завершающуюся символом
// возврата каретки.
Trace.WriteLineC'Trace Message 2");
// Записать строку, если заданное выражение имеет значение true.
Debug.WriteIf(X==Y, "X equals Y");
// Записать строку, завершающуюся символом возврата каретки,
// Если заданное выражение имеет значение true.
Debug.WriteLineIf(X==Y. "X equals Y " ) ;
// Записать результат и показать сообщение,
// если проверка заданного условия дала значение false.
Trace.Assert(X~Y, "X does not equal Y ! " ) ;
// Безусловно записать результат и показать сообщение.
Debug.Fail("Drive 8 is no longer valid.");
Можно изменять отступы трассировочных сообщений, записываемых в набор
Listeners, вызывая методы Indent и Unindent и устанавливая свойства Indeni'Size и
IndentLevel. Эти методы и свойства позволяют создать иерархию сообщений об
ошибках. Свойство IndentSize возвращает или устанавливает число пробелов, со-
ставляющее один уровень отступа, a IndentLevel — уровень отступа для текущего
сообщения. Метод Indent увеличивает, a Unindent— уменьшает значение IndentLevel
на единицу.
Чтобы записать результат, используя класс Trace или Debug, выполните следую-
щие действия.
1. Установите нужный отступе помощью методов Indentи Unindent, например, так:
Visual Basic .NET
Увеличить значение свойства IndentLevel на единицу,
Trace.Indent()
Visual C#
// Увеличить значение свойства IndentLevel на единицу.
Trace.Indent();
2. Чтобы записать данные в набор Listeners., вызовите соответствующий метод;
• Write или WriteLine для безусловной записи;
• Writelfvuwi. WriteLinelf, чтобы записать данные, если проверка условия дает
true;
т Fail зля безусловной записи результата и отображения сообщения;
• Assert, чтобы записать данные, если проверка условия дает true, и отобразить
сообщение.

Теги: .NET

Статьи по теме:

Использование отладочных инструментов
Свойства Font, Cursor и BackGroundlmage
Реализация полиморфизма через интерфейсы
Примеси (mixin)
Создание конфигурационного файла
Редактор типов файлов
Программа сертификации специалистов Microsoft
Подключение класса DoughnutMachine к пользовательскому интерфейсу
Извлечение типизированных данных с помощью объекта DataReader
Ссылки на внешние библиотеки
Проверка на уровне поля
Установка и извлечение динамических свойств вручную
Обеспечение совместимости с замещенными или скрытыми членами
Общие (статические) члены
Создание формы
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Применение классов Debug и Trace. Регион сайта: Москва и Санкт-Петербург