Трассировка и отладка операторов - PullRequest
8 голосов
/ 31 декабря 2008

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

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

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

Debug.WriteLine()
Debug.Assert()

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

Ответы [ 4 ]

7 голосов
/ 31 декабря 2008

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

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

2 голосов
/ 31 декабря 2008

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

2 голосов
/ 31 декабря 2008

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

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

2 голосов
/ 31 декабря 2008

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

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

...