Трассировка против отладки в .NET BCL
-
05-07-2019 - |
Вопрос
Кажется , что
являются в основном одинаковыми, за тем заметным исключением, что Отлаживать использование компилируется в конфигурации выпуска.
Когда бы вы использовали одно, а не другое?Единственный ответ на этот вопрос, который я откопал до сих пор, заключается только в том, что вы используете Отлаживать класс для генерации выходных данных, которые вы видите только в конфигурации отладки, и Трассировка останется в конфигурации выпуска, но на самом деле это не дает ответа на вопрос в моей голове.
Если вы собираетесь инструментализировать свой код, зачем вам вообще использовать Отлаживать, поскольку Трассировка можно ли отключить без перекомпиляции?
Решение
Главное отличие - это то, на которое вы указываете:Отладка не включена в релиз, в то время как трассировка включена.
Предполагаемое различие, насколько я понимаю, заключается в том, что команды разработчиков могут использовать Debug для отправки подробных описательных сообщений, которые могут оказаться слишком подробными (или раскрывающими) для потребителя (ов) продукта, в то время как Trace предназначен для отправки сообщений, которые более конкретно ориентированы на инструментирование приложения.
Отвечая на ваш последний вопрос, я не могу придумать причину использовать Debug для обработки фрагмента кода, который я намеревался выпустить.
Надеюсь, это поможет.
Другие советы
Debug используется исключительно в целях отладки.Он выдает расширенные сообщения при выполнении отладки (режим отладки).
Трассировка помогает в отладке приложений, исправлении ошибок и профилировании (после выпуска).
Класс Debug бесполезен в режиме выпуска.
Единственное различие между trace и debug заключается в том, что инструкции trace по умолчанию включаются в программу при ее компиляции в сборку выпуска, тогда как инструкции debug - нет.
Таким образом, класс debug в основном используется для отладки на этапе разработки, в то время как trace может использоваться для тестирование и оптимизация после того, как приложение будет скомпилировано и выпущено.
Для блоков кода, чувствительных к высокой производительности, оставление трассировки скомпилированной, но отключенной может привести к снижению производительности.
Я бы рассмотрел возможность использования log4net для отслеживания, поскольку его возможности гораздо более гибкие и надежные.
Но для получения настоящих отладочных сообщений, которые я никогда не хочу, чтобы кто-либо, кроме меня или внутреннего тестировщика, видел, я бы, вероятно, придерживался Debug .
Вы сами ответили на свой вопрос.Если бы сообщения отладки оставались внутри, люди могли бы их видеть.Например, допустим, вы делаете:
Debug.WriteLine("Connecting to DB with username: blah and PW: pass");
Любой, кто декомпилирует ваш код, может это увидеть.Но это может быть чем-то жизненно важным для вас, что вы должны знать во время тестирования.
Трейс - это другое.Если вы собираетесь выполнять трассировку, я бы, скорее всего, просто использовал log4net.
Это полная разница между трассировкой и отладкой:Как для отладки, так и для трассировки используется System.Пространство имен Diagnostics.
Отлаживать
- Он использует класс Debug.
- Он используется в отладочной сборке.
- Он использует время разработки приложения.
- В режиме отладки компилятор вставляет некоторый отладочный код внутрь исполняемого файла.
- Класс Debug работает только в режиме отладки.
- Анализ производительности не может быть выполнен с помощью Debug.
- Отладка используется для поиска ошибки в программе.
- Для отладки мы можем использовать Debug.Метод Write().
- Отладка выполняется в том же потоке, что и выполнение основной программы.
Трассировка
- Он использует класс трассировки.
- Инструкция трассировки включается по умолчанию, когда программа компилируется в выпущенную сборку.
- Класс Trace используется для тестирования и оптимизации даже после того, как приложение скомпилировано и выпущено.
- Класс трассировки работает как в режиме отладки, так и в режиме выпуска.
- Трассировка выполняется в другом потоке из основного потока выполнения программы.
- Для трассировки мы можем использовать Trace.Метод Write().
- Он использует время развертывания приложения.
ссылка : острый угол csharp