【问题标题】:Debug.WriteLine shows nothingDebug.WriteLine 什么也没显示
【发布时间】:2012-02-20 23:09:23
【问题描述】:

使用时

using System.Diagnostics;

Debug.WriteLine("Test");

运行应用程序后,在输出中看不到“测试”。但是如果我改用 msgbox 函数,msgbox 会弹出,所以行到了。

我是在看错窗口还是需要更改什么?

我正在使用 VC# Express。

【问题讨论】:

  • 您当然是在 vs ide 中运行您的应用程序?对吗?
  • @Henk Holterman 输出,在最底部显示“调试”的输出。
  • @Steve 好吧,我按下表示 f5 开始在 ide 内调试的绿色三角形

标签: c# debugging


【解决方案1】:

在菜单 > 工具 > 选项 > 调试 > 常规:

  • 确保未选中“将所有输出窗口文本重定向到即时窗口”

关于项目属性 > 构建:

  • 配置:调试
  • 选中“定义调试常量”
  • “定义跟踪常数”被选中

在输出窗口中:

  • 显示来自:调试的输出
  • 右键单击输出窗口并确保选中“程序输出”

【讨论】:

  • 定义 DEBUG 常量是我的解决方案。谢谢
【解决方案2】:

这种行为有两个可能的原因

  • 应用程序正在发布模式下编译,Debug.WriteLine 调用不在最终程序中
  • 程序中没有跟踪侦听器,因此无法输出消息

诊断此问题的最简单方法是将代码更改为

#if DEBUG
Console.WriteLine("the message");
#endif

如果打印出来,则说明您的跟踪侦听器有问题,否则您在 Release 中进行编译

【讨论】:

  • 我替换了 Console.WriteLine("the message"); with MessageBox.Show("这是一条消息");并且有效,因此调试模式已打开。
  • Mono C# 编译器的 --debug 选项 (mcs --debug) 仅在二进制文件中生成调试符号,但不设置 DEBUG,也不设置 TRACE。将mcs --debug -d:DEBUG -d:TRACE Program.cs 用于Debug.WriteLine() 并与工作相关。
  • 我必须清理解决方案和清理项目,构建解决方案,重新构建项目。然后它又工作了。
【解决方案3】:

我相信“Debug.WriteLine()”会写入Listeners 集合。从那里您可以确定调试信息的写入位置。默认情况下,“输出”应该在它出现的位置,但如果您在查看信息时遇到问题,请创建一个不同的侦听器来获取调试信息。

这是 MSDN 示例:

TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(myWriter);

【讨论】:

  • 这是正确的,我的配置中有一个 正在阻止它
  • 我选择了System.Console.Error 而不是System.Console.Out。调试消息不应与实际输出密不可分;输出重定向允许我在我的设置中将它们分开。
  • ConsoleTraceListenerTextWriterTraceListener 的简约子类,它只为标准流编写器提供方便的初始化构造函数:new ConsoleTraceListener() 使用Console.Outnew ConsoleTraceListener(true) 使用Console.ErrorSee its source. BTW,后来的 Console.SetOut()Console.SetError() 调用不会影响它们。
【解决方案4】:

我不确定是否有人提到过这个原因,但如果我在调试模式下编译然后只运行程序 (Ctrl + F5) 而不是选择开始调试 (F5),我将看不到 @987654322 @ 要么。

所以仅仅在调试模式下编译是不够的,你还必须主动调试程序而不仅仅是运行它:)

【讨论】:

  • 正确。你必须有一个“附加”的调试器
  • @MattWilko 好点。如果我需要做一些特殊的调试,我已经养成了检查Debugger.IsAttached - msdn.microsoft.com/en-us/library/… 的习惯
【解决方案5】:

Debug.WriteLine("Test"); 应在您处于调试模式时显示在输出窗口中。如果您想调试正在运行的应用程序(发布模式),您可以使用 Trace,它会显示在 Windows 事件中。

【讨论】:

  • 这就是我要找的地方。输出,在最底部显示“调试”的输出。
【解决方案6】:

答案很简单。可能是您按下了 ctrl+F5,这意味着在不调试的情况下启动。 只需按 F5 即可进入Start Debugging 模式。

【讨论】:

    【解决方案7】:

    对于任何使用谷歌搜索的人: 虽然有各种答案指向删除配置文件中的侦听器,但也要注意

    <remove name="OPTIONSVerbHandler" />
    

    在部分

    <handlers>
    

    因为这也会抑制调试输出。

    【讨论】:

      【解决方案8】:

      对我有帮助的是选择“工具 => 选项 => 项目和解决方案 => 构建和运行 => MSBuild 项目构建输出详细程度”到“诊断”。之后,它刚刚开始在 Debug 块中显示调试输出,而没有添加任何侦听器。 [You need at least 10 reputation to post images. Big thanks to SO for this!]

      【讨论】:

      • 您引用的选项控制构建程序时的输出细节级别。然而,问题与运行程序时的输出有关。
      【解决方案9】:

      从 repo 中提取项目后,启动按钮中的设置与应有的不同。它被设置为发布。如果您在这里结束并且第一个答案不起作用,请检查它。

      Project launch settings

      同时使用 当错误选择发布时,Trace 而不是 Debug 似乎可以工作。

      【讨论】:

        【解决方案10】:

        如果其他任何答案都不起作用。尝试在Debug.WriteLine 行中放置一个断点,看看它是否被击中。

        如果它没有被命中,原因是因为正在执行旧版本的代码。

        要解决此问题,请先检查此问题

        Source

        进入工具-选项

        在项目和解决方案下 -> 构建并运行选择“始终构建” 在“运行中,当项目过期时”下

        并检查临时文件是否已清除。检查这个SO Question

        这对我有用。

        如果失败,请尝试重新启动 VS。大部分时间都有效。

        【讨论】:

          【解决方案11】:

          在将代码部署到远程服务器时,我以不同的方式遇到了这个问题。

          我已经在配置管理器中有一堆预配置的构建配置。我总是在发布时选择暂存环境设置。由于我在本地机器上一直处于调试模式,所以我从未想过预配置的构建配置也有模式。

          所以请检查设置下的配置 - DEBUG 或 RELEASE 并选择 DEBUG

          还要确保将 .pdb 文件与相应的 dll 一起复制。

          希望这对某人有所帮助

          【讨论】:

            猜你喜欢
            • 2014-02-13
            • 1970-01-01
            • 2012-03-29
            • 1970-01-01
            • 1970-01-01
            • 2021-06-13
            • 2016-12-24
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多