Как фильтровать выходные данные в Visual Studio 2012+?

У меня возникает проблема с проверкой конкретных вещей в моем выпуске Debug.WriteLn в Visual Studio 2015. (То же самое и в версии 2012 и 2013 годов.)

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

Ответ 1

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

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

Я могу думать о 3 способах этого:

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

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

Ответ 2

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

Откройте окно "Отладка - выход", просто щелкнув правой кнопкой мыши по окну.

введите описание изображения здесь

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

Ответ 3

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

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

Это дает вам только выход программы Debug.Write X в непосредственном окне и оставляет все остальное содержимое в окне вывода, которое вы можете оставить закрытым.

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

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

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

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

Ответ 4

Я хотел фильтровать вывод Visual Studio в течение многих лет. В конце концов я решил написать расширение, чтобы сделать это. Если вам интересно, вы можете проверить это на niahtextfilter.com.

Вот идея того, что он делает:

Niah Text Filter filtering some debug output