【问题标题】:Debug.WriteLine not workingDebug.WriteLine 不工作
【发布时间】:2009-09-02 22:18:02
【问题描述】:

在过去,也许是我现在使用的 2008 之前的 Visual Studio 版本,我会在我的 VB.NET 代码中做这样的事情:

System.Diagnostics.Debug.WriteLine("Message")

..并且输出将转到输出窗口。

现在没有了。首先显然必须启用某些东西。

如果这涉及“附加调试器”,请说明如何进行。在我看来,它应该可以正常工作而不必大惊小怪。

这是一个实时解释问题并向您展示我的所有设置的视频:

http://screencast.com/t/YQnPb0mJcs

我正在使用 Visual Studio 2008。

【问题讨论】:

    标签: vb.net debugging


    【解决方案1】:

    检查工具 -> 选项 -> 调试 -> 常规下的“将所有输出窗口文本重定向到即时窗口”是否勾选。

    或者,您也可以使用 Console.WriteLine() 函数。

    【讨论】:

    • 我确实检查了您指定的选项,但是在执行 Debug.writeline 后,输出仍然没有进入即时窗口。我宁愿不使用控制台窗口。
    • 控制台并不总是可以从 winforms 或 wpf 程序中使用。
    • 这是我的问题。我很确定(因为这是一个全新的、全新的、干净的安装)我从未接触过这个设置。如果重要的话,我正在使用 VS 2010。感谢您的帮助!!!
    • 我在 VS2012 中遇到了同样的问题,这就是原因。我不记得更改此设置,因此它可能是 VS2012 中的默认设置。谢谢!
    【解决方案2】:

    在输出窗口中右击,确保勾选“程序输出”。

    【讨论】:

    • 谢谢!这确实是我的问题
    【解决方案3】:

    所有好的建议。我注意到我没有看到提到这个提示,所以我会说:在您的 app.config 文件中,确保您的跟踪侦听器中没有 <clear/> 元素

    您将有效地清除跟踪侦听器列表,包括用于调试语句的默认跟踪侦听器。

    这是您的 app.config 文件中的内容:

    <system.diagnostics>
        <trace>
          <listeners>
              <!-- This next line is the troublemaker.  It looks so innocent -->
              <clear/>
          </listeners>
        </trace>
      </system.diagnostics>
    

    如果您想在 app.config 文件中为跟踪侦听器添加占位符,则应改为使用以下内容:

    <system.diagnostics>
        <trace>
          <listeners>
          </listeners>
        </trace>
      </system.diagnostics>
    

    【讨论】:

    • 我无法验证您的答案,因为我不再拥有出现此问题的 PC。获得答案是因为您的答案似乎是一个很好的建议,并且您花时间回答了一个老问题。
    • ;-) 谢谢。我实际上遇到了同样的问题,并且碰巧在我的盒子上解决了这个问题(我刚刚发布了我的发现)。
    • 哦,很好,这真的让我很烦。原来这条线是我们的罪魁祸首:&lt;remove name="Default" /&gt;
    • @DanEsparza 在这里,无需解释即可投票。
    【解决方案4】:

    您确定定义了 DEBUG 常量吗?检查项目属性 -> 编译 -> 高级编译选项(有一个用于调试常量的复选框。如果未选中,您的 Debug.XXX 语句将不会执行)。

    【讨论】:

    • “定义调试常量”被选中,但“自定义常量”文本框为空。如果复选框被选中,值是否应该在“自定义常量”文本框中?
    • 不,自定义常量用于自定义编译常量。 TRACE 和 DEBUG 常量是内置的
    • 这是我的罪魁祸首。在 Visual Studio 2012 中,我选中了 Project > [projectname] Properties... > Build > Define DEBUG constant 下的复选框
    • 如果代码在库中,那么还要确保在库中检查了调试,然后重新编译库,然后重新编译源代码。在我检查了库中的 DEBUG 选项之前,它对我不起作用。
    【解决方案5】:

    如果您的应用是使用 Debug 配置而不是 Release 配置编译的,它应该会转到输出窗口。但是不要使用Debug.WriteLine(),而是尝试使用Trace.WriteLine()(可以选择附加ConsoleTraceListener)。

    【讨论】:

    • 在项目属性的调试选项卡下,配置下拉菜单设置为调试。立即或输出窗口上仍然没有消息。
    • 在附加监听器时跟踪?如何附加监听器(控制台窗口?听起来很旧)
    • 您不需要 ConsoleTraceListener。如果您想编写控制台,这只是一个选项,听起来您不想。只需调用 Trace.WriteLine()。
    【解决方案6】:

    一些额外的想法可以尝试或检查:

    • 在 Debug.WriteLine 之前放置一个断点并查看 System.Diagnostics.Trace.Listeners 集合中的内容。你应该看到DefaultTraceListener。如果你什么都没看到,那么没有人在听,这就是问题所在。
    • 是否有可能在某个位置(例如在配置文件或代码中)清除/修改了跟踪侦听器?
    • 您是否在 Visual Studio 中安装了任何包或插件?还是使用第三方库?
    • 您能在 VS 之外看到调试消息吗?有一个名为 DebugView 的 SysInternals 应用程序可以监视和显示系统中的调试输出。运行该工具,然后运行您的应用程序。您应该在 DebugView 中看到您的调试消息。至少您会知道您的应用程序正在输出调试消息,但 VS 似乎没有在监听。
    • 您是否浏览过输出窗口的内容,查看是否报告了任何异常或错误。您的调试输出不存在,但其中可能有一些可以提供一些线索的东西。

    【讨论】:

    • 我执行了这一行: Debug.WriteLine("test") 然后在即时窗口中执行: ? System.Diagnostics.Trace.Listeners.Count 1 ? System.Diagnostics.Trace.Listeners(0).Name "Default" Sys Internals 工具显示:调试视图:[4812] 测试没有输出到即时或输出窗口
    【解决方案7】:

    检查您的即时窗口。您可能会将所有输出重定向到它。

    【讨论】:

    • 不。那里空无一物。查看我对约翰尼的回答
    【解决方案8】:

    对我来说,这是 Debug.WriteLine 显示在即时窗口中的事实,而不是输出。默认情况下,我安装的 Visual Studio 2013 甚至没有显示打开“立即”窗口的选项,因此您必须执行以下操作:

    Select Tools → Customize 
    Commands Tab
    View | Other Windows menu bar dropdown
    Add Command...
    The Immediate option is in the Debug section.
    

    一旦你确定了,你可以去菜单 ViewOther Windows 并选择立即窗口,嘿,所有的调试输出都可以看到.

    不幸的是,它还显示了大约 50 个我在项目中不知道的错误...也许我会再次将其关闭 :-)

    【讨论】:

      【解决方案9】:

      我在 ASP.NET 应用程序中遇到了同样的问题,我发现我的 Web.Config 有以下行:

      <system.web>
          <trace enabled="false"/>
      </system.web>
      

      只需将其更改为 true,我就开始在 Output 窗口中看到 Debug.WriteLine

      【讨论】:

        【解决方案10】:

        我在 Visual Studio 2013 和 MS 单元测试中遇到了类似的问题。右键单击单元测试方法并选择运行测试任何 Debug.WriteLine 调用都不会显示在即时窗口或调试输出窗口中。即使我正在测试的库和单元测试项目本身都在项目属性的构建部分中进行了 DEBUG 条件检查。

        为了让 Debug.WriteLine 语句输出我运行单元测试所需的任何内容,方法是右键单击并选择“调试测试”。只有这样我才能将调试输出写入调试输出窗口。

        【讨论】:

          【解决方案11】:

          它发生了。当我在 Visual Studio 2010 web developer Express Edition 上开发 ASP.NET MVC 应用程序时,我遇到了类似的症状。执行不会在断点处中断。执行System.Diagnostic.Debug.Writeline时没有输出(即使是debug start运行),web.config也没有错。

          我的解决方法是: - 转到项目属性--> web - 在 Debugger 部分,检查 ASP.NET 选项

          希望这对遇到此线程的人有所帮助。

          【讨论】:

            【解决方案12】:

            我在 Visual Studio Express 2010 中遇到了同样的问题。我全新安装在调试机器上,但没有任何建议有效。我最终使用NLog 并登录到文本文件作为解决方法。

            【讨论】:

              【解决方案13】:

              确保按 F5 启动调试模式(不是 Ctr+F5)。

              F5开始调试

              CTRL+F5不调试就开始

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-03-13
                相关资源
                最近更新 更多