Операторы трассировки и отладки

Я немного запутался в том, как использовать классы .NET Trace и Debug.

Зачем вам использовать Trace вместо Debug?

Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()

Debug.WriteLine()
Debug.Assert()

Кроме того, я понимаю, что операторы отладки игнорируются, когда вы находитесь в режиме конфигурации Release, но если операторы трассировки применяются постоянно, как это влияет на производительность?

Возможный дубликат: stackoverflow.com/questions/179868/trace-vs-debug-in-net-bcl

user 08.01.2013 16:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
1
1 468
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Для меня эмпирическое правило заключается в том, что я использую отладку для фактической отладочной информации, т.е. значение переменной x в этот момент ... и т. д., И Trace для отслеживания потока управления через мое приложение (больше похоже на спам).

Как вы говорите, вызовы трассировки выполняются только тогда, когда вы находитесь в режиме выпуска. Компиляция в режиме выпуска дает некоторые преимущества в производительности, которые могут потребоваться в конечном приложении, и могут быть другие причины, по которым вы хотите включить режим выпуска. Однако могут возникнуть ситуации, когда вы захотите записать информацию в консоль трассировки, которую можно будет просмотреть с помощью таких приложений, как DbgView от SysInternal. Обычно это сообщения, которые не обязательно отправлять в вывод журнала или которые всегда должны быть доступны для целей отладки, даже если пользователь отключил ведение журнала.

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

Ответ принят как подходящий

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

Маршрут Trace имеет настраиваемые прослушиватели трассировки, которые могут быть подключены через конфигурацию; Debug обычно обращается к отладчику в качестве слушателя. Конечно, существуют сторонние системы трассировки, которые предлагают гораздо большую гибкость.

Я, как правило, использовал Trace (со связанным TraceSwitch) для ведения журнала в средах выпуска - быстрая настройка app.config может затем дать разные уровни ведения журнала без необходимости перекомпиляции (что в любом случае может решить проблему. ) или необходимость подключения отладчика. Особенно удобно для проблем, которые возникают только на компьютерах клиентов по какой-либо причине - я использовал это для успешного сброса выхода из класса FTP (еще в старые дни Framework 1.1), чтобы помочь диагностировать проблемы передачи данных по сети между двумя компаниями.

Другие вопросы по теме