Debug.WriteLine不起作用

Cha*_*adD 31 vb.net debugging

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

System.Diagnostics.Debug.WriteLine("Message")
Run Code Online (Sandbox Code Playgroud)

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

现在它没有.首先必须显示某些东西.

如果这涉及"附加调试器",请解释如何执行此操作.在我看来,它应该没有太多的大惊小怪.

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

http://screencast.com/t/YQnPb0mJcs

我正在使用Visual Studio 2008.

Jon*_*nyD 22

检查"工具" - >"选项" - >"调试" - >"常规"下是否选中"将所有输出窗口文本重定向到立即窗口".

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

  • 我确实检查了你指示的选项,但是在执行Debug.writeline之后,输出仍然没有进入立即窗口.我宁愿不使用控制台窗口. (2认同)
  • winforms或wpf程序并不总是提供控制台. (2认同)

Dan*_*rza 15

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

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

以下是app.config文件中的内容:

<system.diagnostics>
    <trace>
      <listeners>
          <!-- This next line is the troublemaker.  It looks so innocent -->
          <clear/>
      </listeners>
    </trace>
  </system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

如果要在app.config文件中为跟踪侦听器设置占位符,则应使用以下内容:

<system.diagnostics>
    <trace>
      <listeners>
      </listeners>
    </trace>
  </system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

  • @DanEsparza在这里,有一个没有解释的upvote. (3认同)

Pau*_*ulS 14

在输出窗口中单击鼠标右键,确保选中"程序输出".


Ham*_*ith 13

你肯定定义了DEBUG常量吗?检查项目属性 - > 编译 - > 高级编译选项(DEBUG常量的复选框.如果未选中,则不会执行Debug.XXX语句).


Joe*_*orn 11

如果使用Debug配置而不是Release配置编译应用程序,它应该转到输出窗口.但是Debug.WriteLine(),请尝试使用Trace.WriteLine()(可选ConsoleTraceListener附加).


Meh*_*ras 7

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

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


Jos*_*rly 5

检查您的立即窗口.您可能将所有输出重定向到它.