【问题标题】:Why is my Debug.Write broken?为什么我的 Debug.Write 坏了?
【发布时间】:2010-02-10 08:39:23
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您是否偶然在发布配置中运行?
  • 哦,我希望它是那么简单:)
  • 你真的在寻找输出的地方吗?默认情况下它不会打印到控制台(无论如何来自我的测试)。
  • 您肯定在使用 System.Diagnostics 命名空间?

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


【解决方案1】:

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

【讨论】:

  • 不错的收获——如果它在我不知情的情况下被设置在我的系统上,那会让我发疯的。不幸的是,我相信总有一天会这样,而且我早就忘记了这个答案......
【解决方案2】:

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

它是否出现在任何窗口中?


编辑:找到这个here

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

b ) 导航至:调试 -> 常规

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

【讨论】:

    【解决方案3】:

    您是否错误地构建了发布版本?发布版本不会在 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 集合,该集合可以在运行时或通过配置文件添加或删除侦听器 - 确保任何配置文件都不会更改调试输出的位置去。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多