Трассировка против отладки в.NET BCL
Кажется, что
System.Diagnostics.Debug
, а такжеSystem.Diagnostics.Trace
во многом совпадают с заметным исключением, что использование отладки компилируется в конфигурации выпуска.
Когда бы вы использовали один, а не другой? Единственный ответ на этот вопрос, который я выкопал до сих пор, заключается в том, что вы используете класс Debug для генерации выходных данных, которые вы видите только в конфигурации отладки, а Trace останется в конфигурации выпуска, но на самом деле это не отвечает на вопрос в моя голова.
Если вы собираетесь использовать свой код, зачем вам использовать Debug, поскольку Trace можно отключить без перекомпиляции?
7 ответов
Основное различие заключается в том, что вы указываете: отладка не включена в выпуск, а трассировка включена.
Насколько я понимаю, предполагаемое различие заключается в том, что команды разработчиков могут использовать Debug для создания насыщенных описательных сообщений, которые могут оказаться слишком подробными (или раскрывающими) для потребителя (ей) продукта, тогда как Trace предназначен для создания видов сообщения, которые более конкретно ориентированы на инструментарий приложения.
Чтобы ответить на ваш последний вопрос, я не могу придумать причину, чтобы использовать Debug для инструмента кода, который я собирался выпустить.
Надеюсь это поможет.
Отладка используется для чисто отладочных целей. Он испускает расширенные сообщения в режиме отладки (режим отладки).
Трассировка помогает в отладке приложений, исправлении ошибок и профилировании (после выпуска).
Класс Debug бесполезен в режиме выпуска.
Единственная разница между трассировкой и отладкой состоит в том, что операторы трассировки по умолчанию включаются в программу, когда она компилируется в сборку выпуска, тогда как оператор отладки - нет.
Таким образом, класс отладки в основном используется для отладки на этапе разработки, а трассировка может использоваться для тестирования и оптимизации после компиляции и выпуска приложения.
Это полная разница между Trace и Debug: и Debug, и Trace используют пространство имен System.Diagnostics.
отлаживать
- Он использует класс Debug.
- Используется в отладочной сборке.
- Используется время разработки приложения.
- В режиме отладки компилятор вставляет некоторый отладочный код в исполняемый файл.
- Класс отладки работает только в режиме отладки.
- Анализ производительности не может быть сделан с помощью Debug.
- Отладка использует для поиска ошибки в программе.
- Для отладки мы можем использовать метод Debug.Write().
- Отладка выполняется в том же потоке, что и основная программа.
след
- Использует класс Trace.
- Оператор трассировки по умолчанию включается при компиляции программы в выпущенную сборку.
- Класс трассировки используется для тестирования и оптимизации даже после того, как приложение скомпилировано и выпущено.
- Класс трассировки работает как в режиме отладки, так и в режиме выпуска.
- Трассировка выполняется в другом потоке от основной программы, выполняющей поток.
- Для Trace мы можем использовать метод Trace.Write().
- Используется время развертывания приложения.
ссылка: csharp угол
Для высокочувствительных блоков кода оставление трассировки скомпилированным, но отключенным может повлиять на производительность.
Я бы посмотрел на использование log4net для трассировки, поскольку его возможности гораздо более гибкие и надежные.
Но для настоящих отладочных сообщений, которые я никогда не собирался видеть кому-либо, кроме меня или внутреннего тестировщика, я бы, вероятно, остановился на Debug.
Вы ответили на свой вопрос. Если сообщения отладки остаются, люди могут их видеть. Например, скажем, вы делаете:
Debug.WriteLine ("Соединение с БД с именем пользователя: blah и PW: pass");
Любой, кто декомпилирует ваш код, может это увидеть. Но это может быть что-то жизненно важное для вас знать во время тестирования.
Трассировка другая. Если вы собираетесь делать трассировку, я бы просто использовал log4net.