如何在Visual Studio 2012+中过滤输出?

时间:2015-05-13 10:27:13

标签: visual-studio visual-studio-debugging

我在Visual Studio 2015的Debug.WriteLn输出中检查特定内容时遇到问题。(2012和2013版也是如此。)

XCode和Eclipse都在Output窗口的顶部包含一个过滤器框。我试图为Visual Studio找到类似的扩展,但我没有运气。有没有办法获得类似的功能并过滤输出窗口?

4 个答案:

答案 0 :(得分:30)

我使用这种方法:

打开Debug - Output窗口,只需右键单击Window即可。

enter image description here

您可以根据需要选中/取消选中。

答案 1 :(得分:6)

VS中的各种服务写入输出窗口,因此有一个基于源的内置过滤器。您通常可以选择源,例如"构建输出","测试发现","一般","调试"等。

Debug.Write调用被VS拦截,文本最终在“输出”窗口中,但在构建过滤中没有。

我可以想出3种方法:

  1. 使用DbgView拦截Debug.Write消息,而不是让VS拦截它们。 DbgView具有非常强大的过滤和着色功能*
  2. 尝试使用基于正则表达式为输出着色的this extension
  3. 编写自己的扩展程序(它并不难!)
  4. (*)如果沿着这条路走下去,请注意Debug.Write只是一个跟踪,当你连接VS调试器时,它会将自己添加为跟踪列表器。 DbgView也是如此。但是当你分离时,它不会删除监听器,并且消息将丢失。

答案 2 :(得分:6)

我在VS 2017中发现的一件事(我认为在其他版本中也是如此)是:

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

这会在即时窗口中为您提供程序的Debug.Write X 输出,并将所有其他垃圾留在输出窗口中,您可以将其关闭。

如果我出于某种原因需要,我仍然可以查看输出窗口中的垃圾箱;它没有被压制。它只是没有进入即时窗口。

我只是将刚出现的小窗口停在底部。

我认为这很好,因为输出窗口中出现了所有垃圾,我真的不再关注输出了比使用条款协议(也就是说,几乎没有),所以宝宝被洗澡水扔了出去。但是现在我实际上 一些程序调试输出,需要注意。

恕我直言Microsoft应该扩展输出窗口下拉框以包括FetFrumos在其答案中指出的所有类别,因此开发人员可以将其设置为“程序输出”。我认为这将是一个很好的改进。

答案 3 :(得分:1)

多年以来,我一直想过滤Visual Studio输出。最终,我决定编写一个扩展来做到这一点。如果您有兴趣,可以在niahtextfilter.com上查看。

这里是它的作用的想法:

Niah Text Filter filtering some debug output