Запись в Debug в режиме релиза - PullRequest
5 голосов
/ 06 августа 2009

У меня есть исключение, которое мне нужно проглотить (исключение во время записи в журнал), однако я не хочу, чтобы информация об исключении была полностью потеряна из-за туманов времени, и поэтому я решил, что я могу по крайней мере вывести ее для отладки, используя

Debug.Write(ex.ToString());

Таким образом, если возникнет необходимость, поддержка может, по крайней мере, использовать DebugView на машине, имеющей проблемы.

Проблема в том, что класс Debug удален в режиме выпуска - как вывести что-то для отладки в режиме выпуска?

Ответы [ 2 ]

16 голосов
/ 06 августа 2009

Просто используйте

Trace.Write(ex.ToString());

Это аналогично Debug.Write(ex.ToString());, но не будет удалено в режиме выпуска (если вы не удалили определение константы TRACE в настройках проекта)

2 голосов
/ 06 августа 2009

Может быть, стоило бы взглянуть на некоторые рамки ведения журналов. Я предпочитаю log4net, где у вас есть разные уровни ведения журнала (DEBUG, INFO, WARN, ERROR), разные регистраторы (вы можете установить один регистратор для каждой важной части приложения), и вы можете установить разные уровни отладки для разных регистраторов, просто изменив Конфигурационный файл Так что, если у вас есть проблемы в какой-то части кода, вы можете установить уровень DEBUG для этого регистратора, а когда вы закончите, вы можете вернуть исходный уровень.

Это просто царапает поверхность, есть много других функций, таких как отправка электронной почты при ошибках или регистрация в БД.

...