Debug.WriteLine не работает

В прошлом, возможно, версии Visual Studio до 2008 года, которые я использую сейчас, я бы сделал что-то подобное в своем коде VB.NET:

System.Diagnostics.Debug.WriteLine("Message")

.. и выход перейдет в окно вывода.

Теперь это не так. Прежде всего должно быть что-то должно быть разрешено.

Если это связано с "прикреплением отладчика", объясните, как это сделать. Мне кажется, что он должен работать без излишней суеты.

Здесь видео, объясняющее проблему в реальном времени и показывающее все мои настройки:

http://screencast.com/t/YQnPb0mJcs

Я использую Visual Studio 2008.

Ответ 1

Все хорошие предложения. Я заметил, что я не упомянула этот отзыв, поэтому я скажу это: В вашем файле app.config убедитесь, что у вас нет элемента <clear/> в ваших прослушивателях трассировки.

Вы эффективно очищаете список прослушивателей трассировки, включая прослушиватель трассировки по умолчанию, используемый для операторов Debug.

Вот что бы это выглядело в вашем файле app.config:

<system.diagnostics>
    <trace>
      <listeners>
          <!-- This next line is the troublemaker.  It looks so innocent -->
          <clear/>
      </listeners>
    </trace>
  </system.diagnostics>

Если вы хотите иметь местозаполнитель для прослушивателей трассировки в файле app.config, вы должны использовать что-то вроде этого:

<system.diagnostics>
    <trace>
      <listeners>
      </listeners>
    </trace>
  </system.diagnostics>

Ответ 2

Убедитесь, что в поле "Переадресовать все окна окна вывода в окно немедленного действия" отмечен раздел "Инструменты" → "Параметры" → "Отладка" → "Общие".

В качестве альтернативы вы также можете использовать функцию Console.WriteLine().

Ответ 3

Определяется ли определенная константа DEBUG? Проверьте свойства проекта → Компилировать → Расширенные параметры компиляции (есть флажок для константы DEBUG. Если он не установлен, ваши операторы Debug.XXX не будут выполнены).

Ответ 4

Щелкните правой кнопкой мыши в окне вывода и убедитесь, что установлен "Выход программы".

Ответ 5

Он должен перейти в окно вывода, если ваше приложение скомпилировано с конфигурацией Debug, а не с конфигурацией Release. Но вместо Debug.WriteLine() попробуйте использовать Trace.WriteLine() (необязательно с прикрепленным ConsoleTraceListener).

Ответ 6

Некоторые дополнительные идеи для проверки или проверки:

  • Поместите контрольную точку перед Debug.WriteLine и посмотрите, что в System.Diagnostics.Trace.Listeners. Вы должны увидеть DefaultTraceListener. Если вы ничего не видите, никто не слушает и эту проблему.
  • Возможно ли, что прослушиватели трассировки будут очищены/изменены где-нибудь, например, в файле конфигурации или в коде?
  • Установили ли вы какой-либо пакет или надстройку в Visual Studio? или используя стороннюю библиотеку?
  • Вы можете видеть отладочные сообщения вне VS? Существует приложение SysInternals, называемое DebugView, которое контролирует и показывает отладочный вывод в вашей системе. Запустите этот инструмент и запустите приложение. Вы должны увидеть свое отладочное сообщение в DebugView. По крайней мере, вы будете знать, что ваше приложение выводит отладочные сообщения, но VS, похоже, не слушает.
  • Прошли ли вы содержимое окна вывода, чтобы узнать, есть ли какие-либо исключения или сообщение об ошибке. Вывод отладки не существует, но там могут быть какие-то вещи, которые могут предоставить некоторые подсказки.

Ответ 7

Проверьте свое ближайшее окно. У вас может быть весь выход, перенаправленный на него.

Ответ 8

Для меня это был тот факт, что Debug.WriteLine отображается в окне Immediate, а не в Output. Моя установка Visual Studio 2013 по умолчанию даже не показывает возможность открыть окно Immediate, поэтому вам нужно сделать следующее:

Select Tools → Customize 
Commands Tab
View | Other Windows menu bar dropdown
Add Command...
The Immediate option is in the Debug section.

Как только вы это сделаете, вы можете перейти в меню "Вид" → "Другие Windows" и выбрать "Немедленное окно", и, возможно, просмотреть весь вывод отладки.

К сожалению, для меня это также показало около 50 ошибок, о которых я не знал в своем проекте... возможно, я просто выключу его снова: -)

Ответ 9

Это происходит. У меня такой же симптом, когда я разрабатываю приложения ASP.NET MVC на веб-разработчике Visual Studio 2010 Express Edition. Выполнение не прерывается в точке останова. Нет выхода, когда он выполняет System.Diagnostic.Debug.Writeline (хотя он работает с запуском отладки), и нет ничего плохого в web.config.

Мое обходное решение: - Перейти к свойствам проекта → web - В разделе "Отладчик" проверьте параметр ASP.NET

Надеюсь, что это поможет кому-то, кто сталкивается с этой нитью.

Ответ 10

У меня была аналогичная проблема с тестированием Visual Studio 2013 и MS. Щелкнув правой кнопкой мыши по методу unit test и выбрав Run Tests, любые вызовы Debug.WriteLine не будут отображаться ни в прямом окне, ни в окне вывода отладки. Несмотря на то, что библиотека, которую я тестировал, и сам проект unit test имел оба условия DEBUG, был установлен в разделе сборки свойств проекта.

Чтобы операторы Debug.WriteLine выводили все, что мне нужно для запуска модульных тестов, щелкнув правой кнопкой мыши и выбрав "Отладочные тесты". Только после этого я получил вывод отладки, который записывается в окно вывода отладки.

Ответ 11

У меня была такая же проблема для приложения ASP.NET, и я узнал, что мой Web.Config имеет следующую строку:

<system.web>
    <trace enabled="false"/>
</system.web>

Просто изменив его на true, и я начал видеть Debug.WriteLine в Output окне.

Ответ 12

У меня была такая же проблема в Visual Studio Express 2010. Я обновился на отладочной машине, и ни одно из предложений не работало. Я закончил использование NLog и выполнил вход в текстовый файл в качестве обходного пути.

Ответ 13

Убедитесь, что вы нажмете F5, чтобы начать режим отладки (не Ctr + F5).

F5 Запуск отладки

CTRL + F5 Запуск без отладки