Cложные приложения не всегда удается эффективно отлаживать под управлением отладчика, чтобы узнать, что пошло не так, как надо Дублирование, а также написание условий, необходимых для отладки, становится зачастую сложной задачей В пространстве имен System: : Diagnostics (Система Диагностика) есть определенные классы, которые помогают оснастить ваше приложение инструментальными средствами
Оснастив приложение необходимыми инструментальными средствами, в процессе отладки и трассировки вы сможете сделать его более устойчивым При этом также проясняется общий шаблон того, как каркас разбивает классы на отдельные задачи (запись вывода, управление выводом, назначение вывода) так, чтобы можно было настроить эти отдельные части, и в остальном полностью полагаться на классы Framework Механика оснащения приложения имеет три аспекта
Классы Trace (Трассировка) и Debug (Отладка) используются для генерации вывода трассировки и отладки Они имеют идентичные методы и свойства, которые позволяют выводить диагностику Однако эти классы не определяют назначение вывода
Классы Listeners (Слушатели) используются для направления вывода на различные устройства, хотя в то же время существует и назначение, принятое по умолчанию
Макроопределения Idef me DEBUG и tfaefine TRACE могут использоваться наряду с макросами lifdef и tendif для включения и отключения документирования Эти макро-флаги могут использоваться для того, чтобы различать отладочные и рабочие конструкции приложения Можно также поставить вывод классов Trace (Трассировка) и Debug (Отладка) в зависимость от значений условных выражений И наконец, можно управлять детализацией вывода, исходя из потребности в информации, с помощью классов BooleanSwitch и TraceSwitch