2015-05-13 2 views
8

Я имею проблему проверки конкретных вещей в моем Debug.WriteLn выход в Visual Studio 2015 (то же самое в 2012 и 2013 версии тоже.)Как фильтровать выходные данные в Visual Studio 2012+?

XCode и Eclipse, и включают в себя фильтр-бокс на верхней части Output окна. Я попытался найти аналогичное расширение для Visual Studio, но мне не повезло. Есть ли способ иметь подобную функцию и фильтровать выходное окно?

+0

, если речь идет об удалении некоторого беспорядка с выхода: см. Также [Visual Studio - исключения фильтра из отладочного вывода] (http://stackoverflow.com/questions/400731/visual-studio-filter-exceptions-from-debug- выход) – user829755

ответ

4

Различные службы в VS записываются в выходное окно, поэтому на основе источника создается встроенный фильтр. Вы можете часто выбирать источник, такой как «Build Output», «Test discovery», «General», «Debug» и т. Д.

Отладочные вызовы Debug.Write перехватываются VS, и текст заканчивается в окне Output, но там нет встроенной фильтрации.

я могу думать о 3-х способов обойти это:

  1. Использование DbgView для перехвата Debug.Write сообщений вместо того, чтобы позволить VS перехватывать их. DbgView имеет очень мощные фильтрации и красящие функции *
  2. Try this extension, что цветов выходного сигнала, основанный на регулярных выражениях
  3. Напишите свое собственное расширение (это не так сложно!)

(*) Если вы спуститесь это обратите внимание, что Debug.Write - это всего лишь трассировка, и когда вы присоединяете отладчик VS, он добавит себя в качестве лидера трассировки. То же самое для DbgView. Но когда вы отсоедините его, он не удалит слушателя, и сообщения будут потеряны.

+0

Спасибо за ваше время и ответ! Я попробовал DbgView (с правами администратора), но он не печатает ничего, что связано с моим приложением. (Я начал и остановил отладчик, но это не сработало). Расширение окраски полезно, но недостаточно для меня, поскольку оно все еще заполняет окно вывода. Странно, что никто не нуждался в этой функции. Я попытаюсь посмотреть, могу ли я быстро написать расширение (хотя пока не знаю, как это сделать): -/ – frankish

+1

Попробуйте запустить приложение без отладчика (или вообще без VS), а затем запустите dbgview. –

+0

Я держал VS открытым, но остановил отладчик, DbgView работал правильно, и я могу отфильтровать его для проведения тестов. Большое спасибо. (Но опять же, я надеюсь, что когда-нибудь VS включит эту функцию фильтрации, поэтому я могу использовать отладчик VS динамически) – frankish

21

Я использую этот метод:

Open Debug Output - окно, просто щелкните правой кнопкой мыши на окне.

enter image description here

Вы можете отметить/снять отметку в соответствии с вашими потребностями.

+1

Спасибо! Это очень полезно. – Winks

2

Одна вещь, которую я только что нашел в VS 2017 (и я думаю, что в других версиях тоже) является:

Tools | Options | Debugging | General > Redirect all Output Window text to the Immediate Window

Это дает вам только программы вывода Debug.WriteX в ближайшем окне и листьев все это другое содержимое в окне вывода, которое вы можете оставить закрытым.

Я все еще могу посмотреть на корзину в окне вывода, если мне нужно по какой-то причине; он не подавляется. Он просто не попадает в ближайшее окно.

И я просто оставлю небольшое мгновенное окно, состыкованное внизу.

Я думаю, что это хорошо, потому что со всем мусором, выходящим в окне вывода, я действительно больше не обращал внимания на результат, чем на соглашение об использовании (то есть почти ничего) , поэтому ребенка выталкивали с водой для ванны. Но теперь я на самом деле см. некоторый отладочный вывод программы, который стоит и требует внимания.

IMHO Microsoft должна расширить раскрывающееся окно окна вывода, чтобы включить в него все категории, которые FetFrumos указал в своем ответе, поэтому разработчики могут просто оставить его «Программным выходом». Я думаю, это будет хорошим улучшением.