Почему мой Debug.Write сломан?

Может кто-нибудь объяснить, почему мой Debug.Write перестает работать без видимой причины - ничего не видно? Это случалось со мной много раз в Visual Studio 2008 (никогда в 2005 году), как в Windows XP, так и в Windows 2003 Server и Windows 7.

Это для каждого проекта и в то же время (на сервере Windows 2003), у меня есть проекты, где Debug.Write работает и не работает.

В настоящее время на Windows 7 у меня нет отладочной информации вообще. Я создаю новый проект Windows Forms, помещаю Debug.Write("bla") в Form_Load и запускаю его, а в окне вывода ничего не происходит. Одинаковое поведение как в проектах vb.net, так и в C#.

ОБНОВЛЕНИЕ: я только что узнал, что мой вывод отладки показывается, но в моем Немедленном окне вместо вывода. Зачем???

ОБНОВЛЕНИЕ: в параметрах Visual Studio есть настройка в разделе "Отладка" - "Общие": перенаправить весь текст окна вывода в окно "Немедленно".

Почему это было проверено по умолчанию, я понятия не имею...

4 ответа

Решение

Сервис> Параметры> Отладка, Общие имеет настройку, которая перенаправляет весь вывод в непосредственное окно.

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

Это появляется в любом из окон?


РЕДАКТИРОВАТЬ: нашел это здесь

а) Зайдите в меню Инструменты, затем Опции. Здесь убедитесь, что у вас выбрано "Показать все настройки" в нижней левой части экрана параметров.

б) Перейдите к: Отладка -> Общие

c) Убедитесь, что у вас есть опция "Перенаправить весь текст окна вывода в окно немедленного действия"

Вы строите релиз по ошибке? Сборка релиза не будет компилироваться в Debug.Write() звонки.

Из документов MSDN ( http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx):

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

Чтобы определить символ условной компиляции "DEBUG" в C# и J#, добавьте /d:DEBUG опция в командной строке компилятора, когда вы компилируете свой код или добавляете #define DEBUG в начало вашего файла. В Visual Basic добавьте /d:DEBUG=True вариант в командной строке компилятора или добавить #Const DEBUG=True в файл.

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

Вы уверены, что в окне "Вывод" выбрано "Отладка" из выпадающего меню "Показать вывод из:"? Просто мысль!

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