Отладка и тестирование приложений в среде Visual Studio 2005. Евсеева О.Н - 15 стр.

UptoLike

Составители: 

15
1.2.2. Классы Debug и Trace
Атрибут условной компиляции Conditional характеризует метод, но не от-
дельный оператор. Иногда хотелось бы иметь условный оператор печати, не
создавая специального метода, как это было сделано в предыдущем примере.
Такую возможность и многие другие полезные свойства предоставляют классы
Debug и Trace.
Классы Debug и Traceэто классы-двойники. Оба они находятся в про-
странстве имен Diagnostics, имеют идентичный набор статических свойств и
методов с идентичной семантикой. В чем же разница? Методы класса Debug
имеют атрибут условной компиляции с константой DEBUG, действуют только
в Debug-конфигурации проекта и игнорируются в Release-конфигурации. Ме-
тоды класса Trace включают два атрибута Conditional с константами DEBUG и
TRACE и действуют в обеих конфигурациях.
Одна из основных групп методов этих классовметоды печати данных:
Write, WriteIf, WriteLine, WriteLineIf. Методы перегружены, в простейшем случае
позволяют выводить некоторое сообщение. Методы со словом If могут сделать
печать условной, задавая условие печати в качестве первого аргумента метода,
что иногда крайне полезно. Методы со словом Line дают возможность допол-
нять сообщение символом перехода на новую строку.
По умолчанию методы обоих классов направляют вывод в окно Output.
Однако это не всегда целесообразно, особенно для Release-конфигурации. За-
мечательным свойством методов классов Debug и Trace является то, что они мо-
гут иметь много «слушателей», направляя вывод каждому из них. Свойство
Listeners этих классов возвращает разделяемую обоими классами коллекцию
слушателейTraceListenerCollection. Как и всякая коллекция, она имеет ряд ме-
тодов для добавления новых слушателей: Add, AddRange, Insertи возможность
удаления слушателей: Clear, Remove, RemoveAt и другие методы. Объекты этой
коллекции в качестве предка имеют абстрактный класс TraceListener.
Библиотека NFCL включает три неабстрактных потомка этого класса:
DefaultTraceListenerслушатель этого класса добавляется в коллекцию по
умолчанию, направляет вывод, поступающий при вызове методов классов
Debug и Trace, в окно Output;
EventLogTraceListenerпосылает сообщения в журнал событий Windows;
TextWriterTraceListenerнаправляет сообщения объектам класса TextWriter или
Stream; обычно один из объектов этого класса направляет вывод на консоль,
другойв файл.
Можно и самому создать потомка абстрактного класса, предложив, на-
пример, XML-слушателя, направляющего вывод в соответствующий XML-
документ. Как видите, система управления выводом очень гибкая, позволяю-
щая получать и сохранять информацию о ходе вычислений в самых разных
местах.