Введение. Подготовка к инструментированию и трассировка.
Термин инструментирование обозначает возможность отслеживания и измерения уровня производительности продукта и диагностики ошибок. В программировании эти термином обозначается способность приложения использовать следующие возможности.
Трассировка кода — получение информационных сообщений о работе приложения во время выполнения.
Отладка — отслеживание и устранение ошибок программирования в приложении при разработке. Дополнительные сведения см. в разделе Отладка.
Счетчики производительности — компоненты, позволяющие отслеживать производительность приложения. Дополнительные сведения см. в разделе Знакомство со способами выявления пороговых значений производительности.
Журналы событий — компоненты, позволяющие получать и отслеживать основные события при выполнении приложения. Дополнительные сведения см. в описании класса EventLog.
Классы Trace и Debug предоставляют средства для контроля и исследования производительности приложения как во время разработки, так и после развертывания. Например, возможно использование класса Trace для отслеживания в развернутом приложении отдельных типов действий по мере их выполнения (например, создание новых подключений к базе данных) и последующего мониторинга производительности приложения.
Отладка и трассировка кода
Использование методов вывода класса Debug при разработке приложения позволяет отображать сообщения в окне вывода, доступном в интегрированной среде разработки Visual Studio. Примеры.
Trace.WriteLine("Hello World!")
Debug.WriteLine("Hello World!")
System.Diagnostics.Trace.WriteLine("Hello World!");
System.Diagnostics.Debug.WriteLine("Hello World!");
System.Diagnostics.Trace.WriteLine("Hello World!");
System.Diagnostics.Debug.WriteLine("Hello World!");
В каждом из этих примеров при запуске приложения в отладчике в окне вывода будет отображено приветствие "Hello World!".
Это дает возможность выполнять отладку приложений и оптимизировать их производительность на основе их поведения в среде тестирования. Возможна отладка приложения при отладочном построении с включенным условным атрибутом Debug, что позволяет получать все выходные данные отладки. Когда приложение будет готово к выпуску, можно скомпилировать построение выпуска, не включая условный атрибут Debug, чтобы код отладки не включался компилятором в конечный исполняемый файл. Дополнительные сведения см. в разделе Практическое руководство. Условная компиляция с использованием атрибутов Trace и Debug. Дополнительные сведения о различных конфигурациях построений для приложения см. в разделе Построение в Visual Studio.
С помощью методов класса Trace можно также отслеживать выполнение кода в установленном приложении. Если в коде поместить строку Переключатели трассировки, можно управлять трассировкой и ее функциями. Это позволяет отслеживать состояние приложения в производственной среде. Это особенно важно для бизнес-приложений, использующих различные компоненты, выполняющиеся на нескольких компьютерах. Файл конфигурации дает возможность управлять использованием параметров после развертывания файла конфигурации. Дополнительные сведения см. в разделе Практическое руководство. Конфигурация переключателей трассировки.
При разработке приложения, для которого предполагается использовать трассировку, в код приложения, как правило, включаются сообщения трассировки и отладки. Когда приложение готово к развертыванию, можно скомпилировать построение выпуска без включения условного атрибута Debug. Однако можно включить условный атрибут Trace, чтобы компилятор вставил в исполняемый файл код трассировки. Дополнительные сведения см. в разделе Практическое руководство. Условная компиляция с использованием атрибутов Trace и Debug.
Этапы трассировки кода
Существует три этапа трассировки кода.
Инструментирование — добавление в приложение кода трассировки.
Трассировка — код трассировки записывает данные в заданном конечном расположении.
Анализ — оценка сведений трассировки для выявления и понимания проблем, имеющихся в приложении.
Во время разработки все методы вывода трассировки и отладки по умолчанию записывают сведения в окне вывода Visual Studio. В развертываемом приложении эти методы записывают сведения в указанное конечное расположение. Дополнительные сведения об указании конечного расположения вывода трассировки и отладки см. в разделе Прослушиватели трассировки.
Инструментирование трассировки и распределенные приложения
В случае создания распределенного приложения тестирование приложения в условиях, приближенных к производственным, может показаться сложной задачей. Немногие группы разработчиков имеют возможность проверить все возможные сочетания операционных систем или веб-обозревателей (в том числе все языковые параметры локализованных версий) или смоделировать большое число пользователей, которые будут иметь одновременный доступ к приложению. При данных обстоятельствах невозможно протестировать реакцию распределенного приложения на интенсивные нагрузки, различные настройки и действия конечных пользователей. Кроме того, многие компоненты распределенного приложения не имеют пользовательского интерфейса, обеспечивающего возможность непосредственного взаимодействия или обзора активности этих компонентов.
Однако существует способ компенсировать эти недостатки, разрешив распределенному приложению информировать системных администраторов о некоторых важных событиях (в особенности о возникших проблемах), путем инструментирования — то есть посредством размещения операторов трассировки в важнейших участках кода. В этом случае при возникновении непредвиденных событий во время выполнения приложения (например, слишком большое время отклика), можно определить вероятную причину.
Операторы трассировки помогают избежать сложностей проверки исходного кода, его изменения, повторной компиляции и попыток воспроизвести ошибку во время выполнения в среде отладки. Следует помнить, что существует возможность инструментировать приложение не только в целях отображения ошибок, но и для мониторинга производительности.
Стратегия размещения операторов трассировки
Размещение операторов трассировки для использования во время выполнения требует особого внимания. Следует выяснить, какие сведения трассировки могут потребоваться в развертываемом приложении, чтобы в полной мере охватить все вероятные сценарии трассировки. Поскольку трассировка используется в множестве различных приложений, не существует общих принципов стратегии размещения операторов трассировки. Дополнительные сведения о размещении операторов трассировки см. в разделе Практическое руководство. Добавление операторов трассировки в код приложения.
Вывод трассировки
Выходные данные трассировки собираются объектами, которые называются прослушивателями. Прослушиватели представляют собой объекты, получающие выходные данные трассировки и записывающие их в устройство вывода (как правило, в окно, журнал событий или текстовый файл). В момент создания прослушиватель трассировки, как правило, добавляется к коллекции Trace.Listeners, что позволяет ему получать все выходные данные трассировки.
Сведения трассировки всегда записываются, по крайней мере, в целевой объект вывода DefaultTraceListener класса Trace. Если по каким-то причинам объект DefaultTraceListener был удален без добавления других прослушивателей в коллекцию Listeners, сообщения трассировки не будут получены. Дополнительные сведения см. в разделе Прослушиватели трассировки.
В следующей таблице перечислены шесть членов класса "Debug" и методов класса "Trace", которые записывают сведения трассировки.
Метод |
Output |
---|---|
Assert |
Заданный текст или, если текст не задан, стек вызовов. Вывод записывается только в том случае, если условие, указанное в качестве аргумента оператора Assert, имеет значение false. |
Не пройден |
Заданный текст или, если текст не задан, стек вызовов. |
Write |
Заданный текст. |
WriteIf |
Заданный текст, если выполняется условие, указанное в качестве аргумента оператора WriteIf. |
WriteLine |
Заданный текст и возврат каретки. |
WriteLineIf |
Заданный текст и возврат каретки, если выполняется условие, указанное в качестве аргумента оператора WriteLineIf. |
Все слушатели в коллекции Listeners получают сообщения, описанные в приведенной выше таблице, но предпринимаемые ими действия зависят от вида прослушивателя, получившего сообщения. Например, прослушиватель DefaultTraceListener отображает диалоговое окно подтверждения при получении уведомления Fail или уведомления о сбое оператора Assert, тогда как TextWriterTraceListener просто записывает вывод в свой поток.
Применив собственный прослушиватель, пользователь может получить необходимые ему результаты. Пользовательский прослушиватель трассировки может, например, отображать сообщения в окне сообщений или подключаться к базе данных для добавления сообщений в таблицу. Все пользовательские прослушиватели должны поддерживать шесть вышеперечисленных методов. Дополнительные сведения о создании прослушивателей, определяемых разработчиками, см. в разделе TraceListener в справочнике по .NET Framework.
Примечание Visual Basic |
---|
В Visual Basic 2005 методы Debug.Write, Debug.WriteIf, Debug.WriteLine и Debug.WriteLineIf заменяют метод Debug.Print, который использовался в более ранних версиях Visual Basic. |
Методы Write и WriteLine всегда записывают заданный текст. Методам Assert, WriteIf и WriteLineIf требуется аргумент типа Boolean, управляющий записью заданного текста; заданный текст записывается данными методами только в том случае, если выражение имеет значение true (для методов WriteIf и WriteLineIf) или false (для метода Assert). Метод Fail всегда записывает заданный текст. Дополнительные сведения см. в разделе Практическое руководство. Добавление операторов трассировки в код приложения и в справочнике по платформе .NET Framework.
Вопросы безопасности
Если не отключить трассировку и отладку перед развертыванием приложения ASP.NET, приложение будет отображать сведения о себе, которыми могут воспользоваться вредоносные программы. Дополнительные сведения см. в разделах Практическое руководство. Условная компиляция с использованием атрибутов Trace и Debug, Построение в Visual Studio и Практическое руководство. Конфигурация переключателей трассировки. Настройка отладки возможна также с помощью служб IIS.
См. также
Задачи
Практическое руководство. Добавление операторов трассировки в код приложения
Практическое руководство. Конфигурация переключателей трассировки