Подтвердить что ты не робот

Trace vs Debug в .NET BCL

Кажется, что

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

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

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

4b9b3361

Ответ 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.