Trace vs Debug в .NET BCL

Кажется, что

в основном совпадают, с заметным исключением, что Debug используется в конфигурации выпуска.

Когда вы будете использовать один, а не другой? Единственный ответ на этот вопрос, который я откопал до сих пор, заключается в том, что вы используете класс Debug для генерации вывода, который вы видите только в конфигурации отладки, а Trace останется в конфигурации релиза, но на самом деле это не отвечает на мой вопрос.

Если вы собираетесь использовать свой код, зачем использовать Debug, так как Trace можно отключить без повторной компиляции?

Ответ 1

Основное отличие заключается в том, что вы указываете: Debug не включен в release, а Trace is.

Предполагаемое различие, насколько я понимаю, состоит в том, что команды разработчиков могут использовать Debug для распространения богатых описательных сообщений, которые могут оказаться слишком подробными (или выявляющими) для потребителя (ов) продукта, в то время как Trace предназначена для испускания типы сообщений, которые более конкретно ориентированы на приложение приложения.

Чтобы ответить на ваш последний вопрос, я не могу придумать причину использования Debug для обработки фрагмента кода, который я планировал выпустить.

Надеюсь, что это поможет.

Ответ 2

Отладка используется для целей чистой отладки. Он испускает богатые сообщения в режиме отладки (режим отладки).

Трассировка помогает при отладке приложений, исправлении ошибок и профилировании (после выпуска).

Класс отладки бесполезен в режиме выпуска.

Ответ 3

Я бы посмотрел на использование log4net для отслеживания, поскольку его возможности намного более гибкие и надежные.

Но для истинных отладочных сообщений, которые я никогда не собираюсь никому, кроме меня или внутреннего тестера, видеть, я бы, вероятно, придерживался Debug.

Ответ 4

Единственное различие между трассировкой и отладкой заключается в том, что инструкции trace включены по умолчанию в программу, когда они скомпилированы в сборку релиза, тогда как команда отладки не является.

Таким образом, класс отладки в основном используется для отладки на этапе разработки, а трассировка может использоваться для тестирования и оптимизации после компиляции и публикации приложения.

Ответ 5

Для высокочувствительных блоков кода, оставленных скомпилированными, но отключенными, может иметь разницу в производительности.

Ответ 6

Вы ответили на свой вопрос. Если сообщения Debug остались, люди могли их видеть. Например, скажем, вы:

Debug.WriteLine("Connecting to DB with username: blah and PW: pass");

Любой, кто декомпилирует ваш код, может это увидеть. Но это может быть чем-то жизненно важным для вас во время тестирования.

Трассировка отличается. Если вы собираетесь делать Trace, я бы просто использовал log4net.