为什么我的Debug.Write坏了?

时间:2010-02-10 08:39:23

标签: visual-studio-2008 windows-7 debugging

有人可以解释为什么我的Debug.Write没有明显的原因停止工作 - 没有输出可见?在Windows XP,Windows 2003 Server和Windows 7上,Visual Studio 2008(从未在2005年)多次发生这种情况。

这是每个项目,同时(在Windows 2003服务器上),我有Debug.Write工作但不起作用的项目。

目前,在Windows 7上我根本没有调试输出。我创建了一个新的Windows窗体项目,在Form_Load中运行Debug.Write(“bla”)运行它,并且在Output窗口中没有任何反应。 vb.net和c#项目都有相同的行为。

更新:我刚刚发现我的调试输出正在显示,但在我的立即窗口中,而不是输出。为什么???

更新:在Visual Studio选项中,调试 - 常规:将所有输出窗口文本重定向到立即窗口下有一个设置。

为什么默认选中这个,我不知道......

4 个答案:

答案 0 :(得分:5)

工具>选项>调试,常规有一个设置,将所有输出重定向到即时窗口。

答案 1 :(得分:1)

如果您肯定在调试模式中运行,那么我建议使用表单加载中的简单Debug.Print快速点头项目。如果你可以让它在一个点头项目中工作,那么它可能与您在原始项目中包含的额外引用有关。

是否出现在任何窗口中?


编辑:找到此here

a)转到菜单工具,然后选择选项。这里确保您在所选选项屏幕的左下方显示“显示所有设置”。

b)导航至:调试 - >一般

c)确保您有“将所有输出窗口文本重定向到立即窗口”选项

答案 2 :(得分:0)

您是否错误地构建了发布版本?发布版本不会在Debug.Write()调用中编译。

来自MSDN文档(http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx):

  

ConditionalAttribute属性应用于Debug的方法。支持ConditionalAttribute的编译器会忽略对这些方法的调用,除非将“DEBUG”定义为条件编译符号。请参阅编译器的文档以确定是否支持ConditionalAttribute以及定义条件编译符号的语法。

     

要在C#和J#中定义“DEBUG”条件编译符号,请在编译代码时将/d:DEBUG选项添加到编译器命令行,或将#define DEBUG添加到文件顶部。在Visual Basic中,将/d:DEBUG=True选项添加到编译器命令行或将#Const DEBUG=True添加到文件中。

另请注意,Debug.Write()方法将其输出发送到TraceListeners集合,该集合可以在运行时或配置文件中添加或删除侦听器 - 确保任何配置文件不会更改调试输出的位置应该去。

答案 3 :(得分:0)

在“输出”窗口中,您确定从“显示输出来自:”下拉菜单中选择了“调试”吗?只是一个想法!