Отладка и трассировка - это взаимосвязанные, но разные действия. Пространство имен System.Diagnostics
поддерживает их оба.
Используйте Debug.Write/WriteLine
для записи сообщений отладки в файл журнала. (И к окну вывода.) Используйте Debug.Assert
, ну почти везде. Весь код, который вы пишете с использованием класса Debug
, удаляется перед компиляцией, если вы не определяете символ DEBUG в своем коде - это делается по умолчанию в опциях для конфигураций Debug и Release.
Используйте Trace.Write/WriteLine
для написания сообщений трассировки. Эти методы функционально эквивалентны методам класса Debug; разница в том, что они удаляются, если вы не определяете символ TRACE в своем коде.
Классы Debug и Trace также имеют целую слегка громоздкую инфраструктуру других классов, например TextWriterTraceListener
, которая позволяет вам делать сложные вещи, такие как изменение вывода журнала трассировки с локального файла на диске на веб-сервис (или ничего) просто отредактировав файл конфигурации приложения. Мой любимый трюк - реализовать TextWriter
, который может записывать текст в TextBox
, и использовать его для перенаправления всей отладки и трассировки в пользовательский интерфейс.
Вы также можете установить флаги в файле конфигурации приложения, которые уважают методы WriteIf
и WriteLineIf
, но по моему опыту они становятся довольно громоздкими.
Я считаю, что в целом я счастлив, если создаю свой собственный статический класс, чтобы обернуть методы Trace
. Это позволяет мне включать и отключать трассировку в пользовательском интерфейсе, просто устанавливая свойство моего Trace
класса.
В заключение: если вам нужно, чтобы приложение использовало что-то вроде трассировки, когда каждый метод начинается и заканчивается, для этого используется чудесный инструмент PostSharp.