Почему мой 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, в которую могут быть добавлены или удалены прослушиватели во время выполнения или с помощью файла конфигурации - убедитесь, что любой файл конфигурации не изменяется в том месте, куда должны идти выходные данные отладки.
Вы уверены, что в окне "Вывод" выбрано "Отладка" из выпадающего меню "Показать вывод из:"? Просто мысль!