Трассировка vs отладка in.NET BCL

Кажется,

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

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

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

7 ответов


основное различие заключается в том, что вы указываете: отладка не включена в выпуск, а трассировка.

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

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

надеюсь, что это помогает.


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

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

класс Debug не используется в режиме выпуска.


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

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


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


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

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


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

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

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

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


Это полная разница между трассировкой и отладкой: Отладка и трассировка используют систему.Пространство имен диагностики.

Debug

  • он использует класс Debug.
  • он использует в отладочной сборке.
  • Он использует время разработки приложений.
  • в режиме отладки компилятор вставляет некоторый отладочный код внутри исполняемого файла.
  • Debug класс работает только в режиме отладки.
  • анализ производительности не может быть выполнен с помощью Отлаживать.
  • отладка использует для поиска ошибки в программе.
  • для отладки мы можем использовать Debug.Метод write.
  • Debug выполняется в том же потоке, что и основная программа.

след

  • Он использует класса Trace.
  • инструкция трассировки включает по умолчанию, когда программа скомпилирована в выпущенную сборку.
  • класс трассировки используется для тестирования и оптимизации даже после компиляции и выпуска приложения.
  • класс трассировки работает как в режиме отладки, так и в режиме выпуска.
  • трассировка выполняется в другой форме потока основной программы выполнения потока.
  • для трассировки мы можем использовать трассировку.Метод write.
  • Он использует время развертывания приложения.

ссылки : угол csharp