Debug.WriteLine什么都没显示

Zur*_*ser 27 c# debugging

使用时

using System.Diagnostics;
Run Code Online (Sandbox Code Playgroud)

Debug.WriteLine("Test");
Run Code Online (Sandbox Code Playgroud)

运行应用程序后,输出中看不到"测试".但是,如果我使用msgbox函数,则会弹出msgbox,因此会到达该行.

我在错误的窗口寻找或者我需要改变什么?

我正在使用VC#Express.

小智 70

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

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

在项目属性>构建:

  • 配置:调试
  • 检查"定义DEBUG常量"
  • 选中"定义TRACE常数"

在"输出"窗口中:

  • 显示输出:Debug
  • 在输出窗口中单击鼠标右键,确保选中"程序输出"

  • 差不多一年后,这个答案仍然很棒.在我取消选中"将所有输出窗口文本重定向到即时窗口"之后,我的Debug.WriteLine("Text"); 开始工作了. (10认同)
  • 上帝,你救了我.对我来说这是一个右键点击的东西.十分感谢! (3认同)

Jar*_*Par 23

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

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

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

#if DEBUG
Console.WriteLine("the message");
#endif
Run Code Online (Sandbox Code Playgroud)

如果它打印,那么跟踪侦听器有问题,否则你在Release中进行编译


Zen*_*sar 6

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

这是MSDN示例:

TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(myWriter);
Run Code Online (Sandbox Code Playgroud)