Я немного запутался в том, как использовать классы .NET Trace и Debug.
Зачем вам использовать Trace вместо Debug?
Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()
Debug.WriteLine()
Debug.Assert()
Кроме того, я понимаю, что операторы отладки игнорируются, когда вы находитесь в режиме конфигурации Release, но если операторы трассировки применяются постоянно, как это влияет на производительность?





Вы можете включать и выключать независимо друг от друга с помощью переключателя компилятора, если вы перейдете на страницу сборки свойств вашего проекта, у вас есть несколько флажков.
Для меня эмпирическое правило заключается в том, что я использую отладку для фактической отладочной информации, т.е. значение переменной x в этот момент ... и т. д., И Trace для отслеживания потока управления через мое приложение (больше похоже на спам).
Как вы говорите, вызовы трассировки выполняются только тогда, когда вы находитесь в режиме выпуска. Компиляция в режиме выпуска дает некоторые преимущества в производительности, которые могут потребоваться в конечном приложении, и могут быть другие причины, по которым вы хотите включить режим выпуска. Однако могут возникнуть ситуации, когда вы захотите записать информацию в консоль трассировки, которую можно будет просмотреть с помощью таких приложений, как DbgView от SysInternal. Обычно это сообщения, которые не обязательно отправлять в вывод журнала или которые всегда должны быть доступны для целей отладки, даже если пользователь отключил ведение журнала.
Вы, конечно, не захотите отправлять много информации в консоль Trace, поскольку это снижает производительность, но некоторая важная информация может быть уместной.
На простейшем уровне у них есть разные переключатели компиляции - то есть Debug.WriteLine и т. д. Переключается только в том случае, если у вас есть символ компиляции DEBUG (не является обычным для сборок выпуска), тогда как Trace.WriteLine обычно включается даже в сборки выпуска.
Маршрут Trace имеет настраиваемые прослушиватели трассировки, которые могут быть подключены через конфигурацию; Debug обычно обращается к отладчику в качестве слушателя. Конечно, существуют сторонние системы трассировки, которые предлагают гораздо большую гибкость.
Я, как правило, использовал Trace (со связанным TraceSwitch) для ведения журнала в средах выпуска - быстрая настройка app.config может затем дать разные уровни ведения журнала без необходимости перекомпиляции (что в любом случае может решить проблему. ) или необходимость подключения отладчика. Особенно удобно для проблем, которые возникают только на компьютерах клиентов по какой-либо причине - я использовал это для успешного сброса выхода из класса FTP (еще в старые дни Framework 1.1), чтобы помочь диагностировать проблемы передачи данных по сети между двумя компаниями.
Возможный дубликат: stackoverflow.com/questions/179868/trace-vs-debug-in-net-bcl