2009-09-02 3 views
29

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

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

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

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

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

Вот видео объясняя этот вопрос в режиме реального времени и показывать вам все мои настройки:

http://screencast.com/t/YQnPb0mJcs

Я с помощью Visual Studio,     2008.

ответ

13

Все хорошие предложения. Я заметил, что я не вижу упоминания этого наконечника, поэтому я скажу это: В вашем файле 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> 
+0

Я не могу подтвердить ваш ответ, потому что у меня больше нет ПК с проблемой. Ответ был получен, потому что ваш ответ казался хорошим предложением, и вы нашли время, чтобы ответить на старый вопрос. – ChadD

+0

;-) Спасибо.У меня на самом деле была такая же проблема, и мне показалось, что это на моей коробке (я только что опубликовал свои выводы). –

+1

О, хорошо, это меня действительно подшучивало. Оказалось, что эта строка была для нас виновной: '' – RandomEngy

11

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

+0

в свойствах проекта на вкладке Debug, раскрывающийся конфигурации устанавливается для отладки. По-прежнему нет сообщений в окнах Immediate или Output. – ChadD

+0

Трассировка при подключении слушателя? Как подключить прослушиватель (окно консоли? Звучит уродливым и старым) – ChadD

+0

Вам не нужен ConsoleTraceListener. Это просто вариант, если вы хотите написать консоль, и это звучит так, как будто вы этого не делаете. Просто позвоните в Trace.WriteLine(). –

5

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

+0

Нет. Здесь пусто. См. Мой ответ Johnny – ChadD

22

Установите флажок «Перенаправить все окна окна вывода в окно немедленного действия» в меню «Сервис» -> «Параметры» -> «Отладка» -> «Общие».

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

+2

Я проверил указанную вами опцию, но после выполнения Debug.writeline вывод все равно не переходит в окно Immediate. Я бы предпочел не использовать окно консоли. – ChadD

+2

Консоль не всегда доступна из программ winforms или wpf. –

+0

Это была моя проблема. Я довольно уверен (поскольку это новая, свежая, чистая установка), что я никогда не касался этой настройки. Я использую VS 2010, если это имеет значение. Спасибо за помощь!!! – mbm29414

12

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

+0

Проверяется «Определить константу DEBUG», но текстовое поле «Пользовательские константы» пуст. Должно ли значение быть в текстовом поле «Пользовательские константы», если флажок установлен? – ChadD

+0

Нет, пользовательские константы предназначены для пользовательских констант компиляции. Константы TRACE и DEBUG построены в –

+0

Это было преступником для меня. В Visual Studio 2012 я установил флажок в Project> [projectname] Properties ...> Build> Define DEBUG constant – Rabarberski

7

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

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

Я выполнил эту строку: Debug.WriteLine ("тест") Затем выполняется это в м eImmediate окне: ? System.Diagnostics.Trace.Listeners.Count ? System.Diagnostics.Trace.Listeners (0) .Name "по умолчанию" Инструмент Sys Внутренности показал: Debug View: [4812] Тест Нет выхода к Immeditate или Output Window – ChadD

12

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

+0

Спасибо !. Это была моя проблема –

1

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

Моего обходным путь является: - свойства проекта Goto -> Web - В разделе Debugger проверьте опцию ASP.NET

Надеется, что это помогает кто-то попадается этой тема.

1

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

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

2

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

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

После того, как вы Ok'd, что вы можете пойти menu ViewДругие окна Windows и выберите окно «Немедленное окно» и убедитесь, что все выходные данные отладки видны.

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

1

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

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

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

1

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

0

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

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

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

Смежные вопросы