Debug.WriteLine ничего не показывает
Когда используешь
using System.Diagnostics;
а также
Debug.WriteLine("Test");
запустив приложение, "Test" не будет виден в выходных данных. Но если я вместо этого использую функцию msgbox, всплывающее окно msgbox появится, и линия будет достигнута.
Я смотрю не в то окно или что я должен изменить?
Я использую VC# Express.
11 ответов
Есть две вероятные причины для такого поведения
- Приложение компилируется в режиме выпуска и
Debug.WriteLine
вызов не в финальной программе - В программе нет прослушивателя трассировки и, следовательно, нет необходимости выводить сообщение
Самый простой способ диагностировать это - изменить код на
#if DEBUG
Console.WriteLine("the message");
#endif
Если он печатает, то у вас есть проблема со слушателями трассировки, иначе вы компилируете в Release
В Меню> Инструменты> Параметры> Отладка> Общие:
- Убедитесь, что "Перенаправить весь текст выходного окна в непосредственное окно" НЕ отмечен
В Свойствах проекта> Построить:
- Конфигурация: отладка
- "Определить постоянную отладки" проверено
- "Определить константу TRACE" отмечен
В окне вывода:
- Показать вывод из: Debug
- Щелкните правой кнопкой мыши в окне вывода и убедитесь, что "Вывод программы" отмечен
Я полагаю, что "Debug.WriteLine()" пишет в коллекцию Listeners. Оттуда вы можете определить, где будет записана отладочная информация. По умолчанию "Output" должен быть там, где он появляется, но если у вас возникли проблемы с просмотром информации, создайте другой слушатель, чтобы получить отладочную информацию.
Вот пример MSDN:
TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(myWriter);
Я не уверен, что кто-то упомянул эту причину, но если я скомпилирую в режиме отладки, а затем просто запустите программу (Ctrl + F5) вместо выбора "Начать отладку" (F5), я не увижу Debug.WriteLine
или.
Так что недостаточно просто скомпилировать в режиме отладки, вам также нужно активно отлаживать программу, а не просто запускать ее:)
Ответ прост. Возможно, вы нажали Ctrl+F5, что означает запуск без отладки. Просто нажмите F5, чтобы Start Debugging
Режим.
Debug.WriteLine("Test");
должен отображаться в окне вывода, когда вы находитесь в режиме отладки. Если вы хотите отлаживать приложение, работающее (режим выпуска), вы можете использовать Trace, и это будет отображаться в событиях Windows.
В случае, если любой другой ответ не работает. Попробуйте установить точку останова в Debug.WriteLine
линии и посмотреть, если он попал.
В случае, если его не ударили, причина в том, что выполняется старая версия кода.
Чтобы это исправить, сначала проверьте это
Перейти в Инструменты-Параметры
В разделе "Проекты и решения" -> "Построить и запустить" выберите "Всегда строить" в разделе "При запуске, если проекты устарели"
И проверьте, очищены ли временные файлы. Проверьте этот вопрос
Это сработало для меня.
Если даже это не помогло, попробуйте перезагрузить VS. Работает большую часть времени.
Что мне помогло, так это выбор "Инструменты => Параметры => Проекты и решения => Сборка и запуск => Подробность вывода сборки проекта MSBuild" на "Диагностика". После этого он просто начал показывать вывод отладки в блоке Debug без добавления слушателей. [У вас должно быть не менее 10 репутации, чтобы размещать изображения. Большое спасибо SO за это!]
После снятия проекта с репо настройки в кнопке запуска были другими, чем должны быть. Он был настроен на публикацию. Если вы оказались здесь, и самый первый ответ не работает, проверьте его.
Кроме того, использование трассировки вместо отладки, похоже, работает, если опубликовано ошибочно выбрано.
Для тех, кто ищет: хотя есть разные ответы, которые указывают на удаление слушателей в файле конфигурации, также следите за
<remove name="OPTIONSVerbHandler" />
в разделе
<handlers>
Поскольку это также подавляет отладочный вывод.
Эта проблема возникла у меня по-другому при развертывании кода на удаленных серверах.
У меня уже была куча предварительно настроенных конфигураций сборки в Configurations Manager. Я всегда выбирал настройки промежуточной среды при публикации. Поскольку я оставался в режиме отладки на своем локальном компьютере, мне никогда не приходило в голову, что в предварительно настроенной конфигурации сборки также есть режим.
Так что проверьте конфигурацию в настройках - DEBUG или RELEASE и выберите DEBUG
Также убедитесь, что вы копируете файлы.pdb вместе с соответствующими библиотеками DLL.
Надеюсь, это кому-то поможет