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.

Надеюсь, это кому-то поможет

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